Aranya
a software development tool for governing access to data and services over a decentralized, zero-trust framework with secure end-to-end encrypted data exchange built-in.
Loading...
Searching...
No Matches
aranya-client.h
Go to the documentation of this file.
1// clang-format off
2// This header is @generated by cbindgen.
3
4/*
5 * Copyright (c) SpiderOak, Inc. All rights reserved.
6 */
14#ifndef ARANYA_CLIENT_H
15#define ARANYA_CLIENT_H
16
17#pragma once
18
19/* Code generated by `capi`. DO NOT EDIT. */
20
21#include <stdbool.h>
22#include <stddef.h>
23#include <stdint.h>
24#include <sys/socket.h>
25
26#ifndef __has_attribute
27 #define __has_attribute(x) 0
28#endif /* __has_attribute */
29
30#if !defined(ARANYA_ALIGNED)
31 #if __has_attribute(aligned)
32 #define ARANYA_ALIGNED(n) __attribute__((aligned(n)))
33 #else
34 #error "compiler must support `aligned` attribute"
35 #endif
36#endif /* ARANYA_ALIGNED */
37
38#if !defined(ARANYA_DESIGNATED_INIT)
39 #if __has_attribute(designated_init)
40 #define ARANYA_DESIGNATED_INIT __attribute__((designated_init))
41 #else
42 #define ARANYA_DESIGNATED_INIT
43 #endif
44#endif /* ARANYA_DESIGNATED_INIT */
45
46#if !defined(ARANYA_MUST_USE)
47 #if __has_attribute(warn_unused_result)
48 #define ARANYA_MUST_USE __attribute__((warn_unused_result))
49 #else
50 #define ARANYA_MUST_USE
51 #endif
52#endif /* ARANYA_MUST_USE */
53
54#if !defined(ARANYA_NO_RETURN)
55 #if __has_attribute(noreturn)
56 #define ARANYA_NO_RETURN __attribute__((noreturn))
57 #else
58 #define ARANYA_NO_RETURN
59 #endif
60#endif /* ARANYA_NO_RETURN */
61
62#if !defined(ARANYA_NON_NULL)
63 #if defined(__gnu__)
64 #if __has_attribute(nonnull)
65 #define ARANYA_NON_NULL __attribute__((nonnull))
66 #endif
67 #elif defined(__clang__)
68 #define ARANYA_NON_NULL _Nonnull
69 #else
70 #define ARANYA_NON_NULL
71 #endif
72#endif /* ARANYA_NON_NULL */
73
74#if !defined(ARANYA_PACKED)
75 #if __has_attribute(packed)
76 #define ARANYA_PACKED __attribute__((packed))
77 #else
78 #define ARANYA_PACKED
79 #endif
80#endif /* ARANYA_PACKED */
81
82#if !defined(ARANYA_DEPRECATED)
83 #if __has_attribute(deprecated)
84 #define ARANYA_DEPRECATED __attribute__((deprecated))
85 #define ARANYA_DEPRECATED_MSG(msg) __attribute__((deprecated(msg)))
86 #else
87 #define ARANYA_DEPRECATED
88 #define ARANYA_DEPRECATED_MSG(msg)
89 #endif
90#endif /* ARANYA_DEPRECATED */
91
92
93#define ARANYA_DURATION_SECONDS (1000 * ARANYA_DURATION_MILLISECONDS)
94
95#define ARANYA_DURATION_MILLISECONDS (1000 * ARANYA_DURATION_MICROSECONDS)
96
97#define ARANYA_DURATION_MICROSECONDS (1000 * ARANYA_DURATION_NANOSECONDS)
98
99#define ARANYA_DURATION_NANOSECONDS 1
100
104#define ARANYA_ID_LEN 32
105
111#define ARANYA_SEED_IKM_LEN 32
112
116#define ARANYA_ID_STR_LEN (((ARANYA_ID_LEN * 1375) / 1000) + 1)
117
118#if defined(ENABLE_ARANYA_AFC)
125#define ARANYA_AFC_CHANNEL_OVERHEAD 24
126#endif
127
206#ifndef __cplusplus
207typedef uint32_t AranyaError;
208#endif // __cplusplus
209
289#ifndef __cplusplus
290typedef uint8_t AranyaPermission;
291#endif // __cplusplus
292
297#ifdef __cplusplus
298 : uint8_t
299#endif // __cplusplus
300 {
316};
317#ifndef __cplusplus
318typedef uint8_t AranyaChanOp;
319#endif // __cplusplus
320
351typedef struct ARANYA_ALIGNED(8) AranyaExtError {
357 uint8_t __for_size_only[96];
359
363typedef struct ARANYA_ALIGNED(16) AranyaClient {
369 uint8_t __for_size_only[3728];
371
377typedef struct ARANYA_ALIGNED(8) AranyaClientConfig {
383 uint8_t __for_size_only[56];
385
389typedef struct ARANYA_ALIGNED(8) AranyaRole {
395 uint8_t __for_size_only[112];
397
401typedef struct AranyaId {
402 uint8_t bytes[ARANYA_ID_LEN];
404
408typedef struct AranyaRoleId {
409 struct AranyaId id;
411
415typedef struct AranyaDeviceId {
416 struct AranyaId id;
418
422typedef struct ARANYA_ALIGNED(8) AranyaLabel {
428 uint8_t __for_size_only[112];
430
434typedef struct AranyaLabelId {
435 struct AranyaId id;
437
441typedef struct ARANYA_ALIGNED(8) AranyaClientConfigBuilder {
447 uint8_t __for_size_only[72];
449
457typedef struct ARANYA_ALIGNED(8) AranyaAddTeamQuicSyncConfigBuilder {
463 uint8_t __for_size_only[288];
465
473typedef struct ARANYA_ALIGNED(8) AranyaCreateTeamQuicSyncConfigBuilder {
479 uint8_t __for_size_only[56];
481
489typedef struct ARANYA_DEPRECATED_MSG("PSK seeds are no longer used with mTLS authentication") AranyaSeedIkm {
490 uint8_t bytes[ARANYA_SEED_IKM_LEN];
491} AranyaSeedIkm;
492
500typedef struct ARANYA_ALIGNED(8) AranyaCreateTeamQuicSyncConfig {
506 uint8_t __for_size_only[56];
508
516typedef struct ARANYA_ALIGNED(8) AranyaAddTeamQuicSyncConfig {
522 uint8_t __for_size_only[288];
524
528typedef struct ARANYA_ALIGNED(8) AranyaAddTeamConfigBuilder {
534 uint8_t __for_size_only[328];
536
540typedef struct ARANYA_ALIGNED(8) AranyaCreateTeamConfigBuilder {
546 uint8_t __for_size_only[56];
548
552typedef struct AranyaTeamId {
553 struct AranyaId id;
555
561typedef struct ARANYA_ALIGNED(8) AranyaAddTeamConfig {
567 uint8_t __for_size_only[320];
569
575typedef struct ARANYA_ALIGNED(8) AranyaCreateTeamConfig {
581 uint8_t __for_size_only[56];
583
587typedef struct ARANYA_ALIGNED(8) AranyaSyncPeerConfigBuilder {
593 uint8_t __for_size_only[40];
595
601typedef struct ARANYA_ALIGNED(8) AranyaSyncPeerConfig {
607 uint8_t __for_size_only[40];
609
613typedef uint64_t AranyaDuration;
614
615#if defined(ENABLE_ARANYA_PREVIEW)
619typedef struct ARANYA_ALIGNED(8) AranyaHelloSubscriptionConfigBuilder {
625 uint8_t __for_size_only[40];
626} AranyaHelloSubscriptionConfigBuilder;
627#endif
628
629#if defined(ENABLE_ARANYA_PREVIEW)
635typedef struct ARANYA_ALIGNED(8) AranyaHelloSubscriptionConfig {
641 uint8_t __for_size_only[40];
642} AranyaHelloSubscriptionConfig;
643#endif
644
650typedef const char *AranyaRoleName;
651
657typedef int64_t AranyaRank;
658
664typedef const char *AranyaLabelName;
665
669typedef struct AranyaObjectId {
670 struct AranyaId id;
672
678typedef const char *AranyaAddr;
679
680#if defined(ENABLE_ARANYA_AFC)
684typedef struct ARANYA_ALIGNED(8) AranyaAfcSendChannel {
690 uint8_t __for_size_only[160];
692#endif
693
694#if defined(ENABLE_ARANYA_AFC)
698typedef struct ARANYA_ALIGNED(8) AranyaAfcReceiveChannel {
704 uint8_t __for_size_only[160];
706#endif
707
708#if defined(ENABLE_ARANYA_AFC)
715typedef struct ARANYA_ALIGNED(8) AranyaAfcCtrlMsg {
721 uint8_t __for_size_only[32];
723#endif
724
725#if defined(ENABLE_ARANYA_AFC)
731typedef struct ARANYA_ALIGNED(8) AranyaAfcSeq {
737 uint8_t __for_size_only[24];
739#endif
740
741#if defined(ENABLE_ARANYA_AFC)
745typedef struct AranyaAfcChannelId {
746 struct AranyaId id;
748#endif
749
750#ifdef __cplusplus
751extern "C" {
752#endif // __cplusplus
753
763const char *aranya_error_to_str(uint32_t err);
764
774
783
804 char *msg,
805 size_t *msg_len);
806
827 char *msg,
828 size_t *msg_len,
829 struct AranyaExtError *__ext_err);
830
840 const struct AranyaClientConfig *config);
841
851 const struct AranyaClientConfig *config,
852 struct AranyaExtError *__ext_err);
853
862
871
880 struct AranyaRoleId *__output);
881
890 struct AranyaRoleId *__output,
891 struct AranyaExtError *__ext_err);
892
903 const char **__output);
904
913 struct AranyaDeviceId *__output);
914
923 struct AranyaDeviceId *__output,
924 struct AranyaExtError *__ext_err);
925
934
943 struct AranyaLabelId *__output);
944
955 const char **__output);
956
965 struct AranyaDeviceId *__output);
966
976AranyaError aranya_permission_to_str(AranyaPermission perm,
977 const char **__output);
978
986
994
1005 uint8_t *public_key_bundle,
1006 size_t *public_key_bundle_len);
1007
1018 uint8_t *public_key_bundle,
1019 size_t *public_key_bundle_len,
1020 struct AranyaExtError *__ext_err);
1021
1035ARANYA_DEPRECATED_MSG("Use `aranya_get_public_key_bundle`.")
1036AranyaError aranya_get_key_bundle(const struct AranyaClient *client,
1037 uint8_t *public_key_bundle,
1038 size_t *public_key_bundle_len);
1039
1053ARANYA_DEPRECATED_MSG("Use `aranya_get_public_key_bundle`.")
1054AranyaError aranya_get_key_bundle_ext(const struct AranyaClient *client,
1055 uint8_t *public_key_bundle,
1056 size_t *public_key_bundle_len,
1057 struct AranyaExtError *__ext_err);
1058
1071 char *str,
1072 size_t *str_len);
1073
1081AranyaError aranya_id_from_str(const char *str, struct AranyaId *__output);
1082
1091AranyaError aranya_get_device_id(const struct AranyaClient *client,
1092 struct AranyaDeviceId *__output);
1093
1102AranyaError aranya_get_device_id_ext(const struct AranyaClient *client,
1103 struct AranyaDeviceId *__output,
1104 struct AranyaExtError *__ext_err);
1105
1114AranyaError aranya_client_config_builder_init(struct AranyaClientConfigBuilder *out);
1115
1123AranyaError aranya_client_config_builder_cleanup(struct AranyaClientConfigBuilder *ptr);
1124
1136AranyaError aranya_client_config_build(struct AranyaClientConfigBuilder *cfg,
1137 struct AranyaClientConfig *out);
1138
1150AranyaError aranya_client_config_build_ext(struct AranyaClientConfigBuilder *cfg,
1151 struct AranyaClientConfig *out,
1152 struct AranyaExtError *__ext_err);
1153
1162AranyaError aranya_client_config_builder_set_daemon_uds_path(struct AranyaClientConfigBuilder *cfg,
1163 const char *address);
1164
1173AranyaError aranya_client_config_builder_set_daemon_uds_path_ext(struct AranyaClientConfigBuilder *cfg,
1174 const char *address,
1175 struct AranyaExtError *__ext_err);
1176
1185AranyaError aranya_add_team_quic_sync_config_builder_init(struct AranyaAddTeamQuicSyncConfigBuilder *out);
1186
1194AranyaError aranya_add_team_quic_sync_config_builder_cleanup(struct AranyaAddTeamQuicSyncConfigBuilder *ptr);
1195
1204AranyaError aranya_create_team_quic_sync_config_builder_init(struct AranyaCreateTeamQuicSyncConfigBuilder *out);
1205
1213AranyaError aranya_create_team_quic_sync_config_builder_cleanup(struct AranyaCreateTeamQuicSyncConfigBuilder *ptr);
1214
1224ARANYA_DEPRECATED_MSG("QUIC sync config is no longer used with mTLS authentication")
1225AranyaError aranya_create_team_quic_sync_config_generate(struct AranyaCreateTeamQuicSyncConfigBuilder *_cfg);
1226
1236ARANYA_DEPRECATED_MSG("QUIC sync config is no longer used with mTLS authentication")
1237AranyaError aranya_create_team_quic_sync_config_generate_ext(struct AranyaCreateTeamQuicSyncConfigBuilder *_cfg,
1238 struct AranyaExtError *__ext_err);
1239
1250ARANYA_DEPRECATED_MSG("PSK seeds are no longer used with mTLS authentication")
1251AranyaError aranya_add_team_quic_sync_config_wrapped_seed(struct AranyaAddTeamQuicSyncConfigBuilder *_cfg,
1252 const uint8_t *_encap_seed,
1253 size_t _encap_seed_len);
1254
1265ARANYA_DEPRECATED_MSG("PSK seeds are no longer used with mTLS authentication")
1266AranyaError aranya_add_team_quic_sync_config_wrapped_seed_ext(struct AranyaAddTeamQuicSyncConfigBuilder *_cfg,
1267 const uint8_t *_encap_seed,
1268 size_t _encap_seed_len,
1269 struct AranyaExtError *__ext_err);
1270
1281ARANYA_DEPRECATED_MSG("PSK seeds are no longer used with mTLS authentication")
1282AranyaError aranya_create_team_quic_sync_config_raw_seed_ikm(struct AranyaCreateTeamQuicSyncConfigBuilder *_cfg,
1283 const struct AranyaSeedIkm *_ikm);
1284
1295ARANYA_DEPRECATED_MSG("PSK seeds are no longer used with mTLS authentication")
1296AranyaError aranya_create_team_quic_sync_config_raw_seed_ikm_ext(struct AranyaCreateTeamQuicSyncConfigBuilder *_cfg,
1297 const struct AranyaSeedIkm *_ikm,
1298 struct AranyaExtError *__ext_err);
1299
1310ARANYA_DEPRECATED_MSG("PSK seeds are no longer used with mTLS authentication")
1311AranyaError aranya_add_team_quic_sync_config_raw_seed_ikm(struct AranyaAddTeamQuicSyncConfigBuilder *_cfg,
1312 const struct AranyaSeedIkm *_ikm);
1313
1324ARANYA_DEPRECATED_MSG("PSK seeds are no longer used with mTLS authentication")
1325AranyaError aranya_add_team_quic_sync_config_raw_seed_ikm_ext(struct AranyaAddTeamQuicSyncConfigBuilder *_cfg,
1326 const struct AranyaSeedIkm *_ikm,
1327 struct AranyaExtError *__ext_err);
1328
1342ARANYA_DEPRECATED_MSG("QUIC sync config is no longer used with mTLS authentication")
1343AranyaError aranya_create_team_quic_sync_config_build(struct AranyaCreateTeamQuicSyncConfigBuilder *_cfg,
1344 struct AranyaCreateTeamQuicSyncConfig *_out);
1345
1359ARANYA_DEPRECATED_MSG("QUIC sync config is no longer used with mTLS authentication")
1360AranyaError aranya_create_team_quic_sync_config_build_ext(struct AranyaCreateTeamQuicSyncConfigBuilder *_cfg,
1361 struct AranyaCreateTeamQuicSyncConfig *_out,
1362 struct AranyaExtError *__ext_err);
1363
1377ARANYA_DEPRECATED_MSG("QUIC sync config is no longer used with mTLS authentication")
1378AranyaError aranya_add_team_quic_sync_config_build(struct AranyaAddTeamQuicSyncConfigBuilder *_cfg,
1379 struct AranyaAddTeamQuicSyncConfig *_out);
1380
1394ARANYA_DEPRECATED_MSG("QUIC sync config is no longer used with mTLS authentication")
1395AranyaError aranya_add_team_quic_sync_config_build_ext(struct AranyaAddTeamQuicSyncConfigBuilder *_cfg,
1396 struct AranyaAddTeamQuicSyncConfig *_out,
1397 struct AranyaExtError *__ext_err);
1398
1407AranyaError aranya_add_team_config_builder_init(struct AranyaAddTeamConfigBuilder *out);
1408
1416AranyaError aranya_add_team_config_builder_cleanup(struct AranyaAddTeamConfigBuilder *ptr);
1417
1426AranyaError aranya_create_team_config_builder_init(struct AranyaCreateTeamConfigBuilder *out);
1427
1435AranyaError aranya_create_team_config_builder_cleanup(struct AranyaCreateTeamConfigBuilder *ptr);
1436
1449ARANYA_DEPRECATED_MSG("QUIC sync config is no longer used with mTLS authentication")
1450AranyaError aranya_add_team_config_builder_set_quic_syncer(struct AranyaAddTeamConfigBuilder *_cfg,
1451 struct AranyaAddTeamQuicSyncConfig *_quic);
1452
1465ARANYA_DEPRECATED_MSG("QUIC sync config is no longer used with mTLS authentication")
1466AranyaError aranya_add_team_config_builder_set_quic_syncer_ext(struct AranyaAddTeamConfigBuilder *_cfg,
1467 struct AranyaAddTeamQuicSyncConfig *_quic,
1468 struct AranyaExtError *__ext_err);
1469
1480AranyaError aranya_add_team_config_builder_set_id(struct AranyaAddTeamConfigBuilder *cfg,
1481 const struct AranyaTeamId *team_id);
1482
1493AranyaError aranya_add_team_config_builder_set_id_ext(struct AranyaAddTeamConfigBuilder *cfg,
1494 const struct AranyaTeamId *team_id,
1495 struct AranyaExtError *__ext_err);
1496
1508AranyaError aranya_add_team_config_build(struct AranyaAddTeamConfigBuilder *cfg,
1509 struct AranyaAddTeamConfig *out);
1510
1522AranyaError aranya_add_team_config_build_ext(struct AranyaAddTeamConfigBuilder *cfg,
1523 struct AranyaAddTeamConfig *out,
1524 struct AranyaExtError *__ext_err);
1525
1538ARANYA_DEPRECATED_MSG("QUIC sync config is no longer used with mTLS authentication")
1539AranyaError aranya_create_team_config_builder_set_quic_syncer(struct AranyaCreateTeamConfigBuilder *_cfg,
1540 struct AranyaCreateTeamQuicSyncConfig *_quic);
1541
1554ARANYA_DEPRECATED_MSG("QUIC sync config is no longer used with mTLS authentication")
1555AranyaError aranya_create_team_config_builder_set_quic_syncer_ext(struct AranyaCreateTeamConfigBuilder *_cfg,
1556 struct AranyaCreateTeamQuicSyncConfig *_quic,
1557 struct AranyaExtError *__ext_err);
1558
1570AranyaError aranya_create_team_config_build(struct AranyaCreateTeamConfigBuilder *cfg,
1571 struct AranyaCreateTeamConfig *out);
1572
1584AranyaError aranya_create_team_config_build_ext(struct AranyaCreateTeamConfigBuilder *cfg,
1585 struct AranyaCreateTeamConfig *out,
1586 struct AranyaExtError *__ext_err);
1587
1596AranyaError aranya_sync_peer_config_builder_init(struct AranyaSyncPeerConfigBuilder *out);
1597
1605AranyaError aranya_sync_peer_config_builder_cleanup(struct AranyaSyncPeerConfigBuilder *ptr);
1606
1618AranyaError aranya_sync_peer_config_build(struct AranyaSyncPeerConfigBuilder *cfg,
1619 struct AranyaSyncPeerConfig *out);
1620
1632AranyaError aranya_sync_peer_config_build_ext(struct AranyaSyncPeerConfigBuilder *cfg,
1633 struct AranyaSyncPeerConfig *out,
1634 struct AranyaExtError *__ext_err);
1635
1648AranyaError aranya_sync_peer_config_builder_set_interval(struct AranyaSyncPeerConfigBuilder *cfg,
1649 AranyaDuration interval);
1650
1663AranyaError aranya_sync_peer_config_builder_set_interval_ext(struct AranyaSyncPeerConfigBuilder *cfg,
1664 AranyaDuration interval,
1665 struct AranyaExtError *__ext_err);
1666
1678AranyaError aranya_sync_peer_config_builder_set_sync_now(struct AranyaSyncPeerConfigBuilder *cfg);
1679
1691AranyaError aranya_sync_peer_config_builder_set_sync_now_ext(struct AranyaSyncPeerConfigBuilder *cfg,
1692 struct AranyaExtError *__ext_err);
1693
1705AranyaError aranya_sync_peer_config_builder_set_sync_later(struct AranyaSyncPeerConfigBuilder *cfg);
1706
1718AranyaError aranya_sync_peer_config_builder_set_sync_later_ext(struct AranyaSyncPeerConfigBuilder *cfg,
1719 struct AranyaExtError *__ext_err);
1720
1721#if defined(ENABLE_ARANYA_PREVIEW)
1732AranyaError aranya_sync_peer_config_builder_set_sync_on_hello(struct AranyaSyncPeerConfigBuilder *cfg,
1733 uint32_t sync_on_hello);
1734#endif
1735
1736#if defined(ENABLE_ARANYA_PREVIEW)
1747AranyaError aranya_sync_peer_config_builder_set_sync_on_hello_ext(struct AranyaSyncPeerConfigBuilder *cfg,
1748 uint32_t sync_on_hello,
1749 struct AranyaExtError *__ext_err);
1750#endif
1751
1752#if defined(ENABLE_ARANYA_PREVIEW)
1761AranyaError aranya_hello_subscription_config_builder_init(struct AranyaHelloSubscriptionConfigBuilder *out);
1762#endif
1763
1764#if defined(ENABLE_ARANYA_PREVIEW)
1772AranyaError aranya_hello_subscription_config_builder_cleanup(struct AranyaHelloSubscriptionConfigBuilder *ptr);
1773#endif
1774
1775#if defined(ENABLE_ARANYA_PREVIEW)
1787AranyaError aranya_hello_subscription_config_build(struct AranyaHelloSubscriptionConfigBuilder *cfg,
1788 struct AranyaHelloSubscriptionConfig *out);
1789#endif
1790
1791#if defined(ENABLE_ARANYA_PREVIEW)
1803AranyaError aranya_hello_subscription_config_build_ext(struct AranyaHelloSubscriptionConfigBuilder *cfg,
1804 struct AranyaHelloSubscriptionConfig *out,
1805 struct AranyaExtError *__ext_err);
1806#endif
1807
1808#if defined(ENABLE_ARANYA_PREVIEW)
1820AranyaError aranya_hello_subscription_config_builder_set_graph_change_debounce(struct AranyaHelloSubscriptionConfigBuilder *cfg,
1821 AranyaDuration duration);
1822#endif
1823
1824#if defined(ENABLE_ARANYA_PREVIEW)
1836AranyaError aranya_hello_subscription_config_builder_set_graph_change_debounce_ext(struct AranyaHelloSubscriptionConfigBuilder *cfg,
1837 AranyaDuration duration,
1838 struct AranyaExtError *__ext_err);
1839#endif
1840
1841#if defined(ENABLE_ARANYA_PREVIEW)
1853AranyaError aranya_hello_subscription_config_builder_set_expiration(struct AranyaHelloSubscriptionConfigBuilder *cfg,
1854 AranyaDuration expiration);
1855#endif
1856
1857#if defined(ENABLE_ARANYA_PREVIEW)
1869AranyaError aranya_hello_subscription_config_builder_set_expiration_ext(struct AranyaHelloSubscriptionConfigBuilder *cfg,
1870 AranyaDuration expiration,
1871 struct AranyaExtError *__ext_err);
1872#endif
1873
1874#if defined(ENABLE_ARANYA_PREVIEW)
1885AranyaError aranya_hello_subscription_config_builder_set_periodic_interval(struct AranyaHelloSubscriptionConfigBuilder *cfg,
1886 AranyaDuration interval);
1887#endif
1888
1889#if defined(ENABLE_ARANYA_PREVIEW)
1900AranyaError aranya_hello_subscription_config_builder_set_periodic_interval_ext(struct AranyaHelloSubscriptionConfigBuilder *cfg,
1901 AranyaDuration interval,
1902 struct AranyaExtError *__ext_err);
1903#endif
1904
1932 const struct AranyaTeamId *team,
1933 struct AranyaRole *roles_out,
1934 size_t *roles_len);
1935
1963 const struct AranyaTeamId *team,
1964 struct AranyaRole *roles_out,
1965 size_t *roles_len,
1966 struct AranyaExtError *__ext_err);
1967
1988 const struct AranyaTeamId *team,
1989 const struct AranyaDeviceId *device,
1990 const struct AranyaRoleId *old_role,
1991 const struct AranyaRoleId *new_role);
1992
2013 const struct AranyaTeamId *team,
2014 const struct AranyaDeviceId *device,
2015 const struct AranyaRoleId *old_role,
2016 const struct AranyaRoleId *new_role,
2017 struct AranyaExtError *__ext_err);
2018
2034 const struct AranyaTeamId *team,
2035 struct AranyaRole *roles_out,
2036 size_t *roles_out_len);
2037
2053 const struct AranyaTeamId *team,
2054 struct AranyaRole *roles_out,
2055 size_t *roles_out_len,
2056 struct AranyaExtError *__ext_err);
2057
2074 const struct AranyaTeamId *team,
2075 AranyaRoleName role_name,
2076 AranyaRank rank,
2077 struct AranyaRole *role_out);
2078
2095 const struct AranyaTeamId *team,
2096 AranyaRoleName role_name,
2097 AranyaRank rank,
2098 struct AranyaRole *role_out,
2099 struct AranyaExtError *__ext_err);
2100
2117 const struct AranyaTeamId *team,
2118 const struct AranyaRoleId *role);
2119
2136 const struct AranyaTeamId *team,
2137 const struct AranyaRoleId *role,
2138 struct AranyaExtError *__ext_err);
2139
2155 const struct AranyaTeamId *team,
2156 const struct AranyaRoleId *role,
2157 AranyaPermission perm);
2158
2174 const struct AranyaTeamId *team,
2175 const struct AranyaRoleId *role,
2176 AranyaPermission perm,
2177 struct AranyaExtError *__ext_err);
2178
2194 const struct AranyaTeamId *team,
2195 const struct AranyaRoleId *role,
2196 AranyaPermission perm);
2197
2213 const struct AranyaTeamId *team,
2214 const struct AranyaRoleId *role,
2215 AranyaPermission perm,
2216 struct AranyaExtError *__ext_err);
2217
2234 const struct AranyaTeamId *team,
2235 const struct AranyaRoleId *role,
2236 AranyaPermission *perms_out,
2237 size_t *perms_len);
2238
2255 const struct AranyaTeamId *team,
2256 const struct AranyaRoleId *role,
2257 AranyaPermission *perms_out,
2258 size_t *perms_len,
2259 struct AranyaExtError *__ext_err);
2260
2280 const struct AranyaTeamId *team,
2281 const struct AranyaDeviceId *device,
2282 const struct AranyaRoleId *role_id);
2283
2303 const struct AranyaTeamId *team,
2304 const struct AranyaDeviceId *device,
2305 const struct AranyaRoleId *role_id,
2306 struct AranyaExtError *__ext_err);
2307
2323 const struct AranyaTeamId *team,
2324 const struct AranyaDeviceId *device,
2325 const struct AranyaRoleId *role_id);
2326
2342 const struct AranyaTeamId *team,
2343 const struct AranyaDeviceId *device,
2344 const struct AranyaRoleId *role_id,
2345 struct AranyaExtError *__ext_err);
2346
2362 const struct AranyaTeamId *team,
2363 AranyaLabelName name,
2364 AranyaRank rank,
2365 struct AranyaLabelId *__output);
2366
2382 const struct AranyaTeamId *team,
2383 AranyaLabelName name,
2384 AranyaRank rank,
2385 struct AranyaLabelId *__output,
2386 struct AranyaExtError *__ext_err);
2387
2402 const struct AranyaTeamId *team,
2403 const struct AranyaLabelId *label_id);
2404
2419 const struct AranyaTeamId *team,
2420 const struct AranyaLabelId *label_id,
2421 struct AranyaExtError *__ext_err);
2422
2454 const struct AranyaTeamId *team,
2455 const struct AranyaObjectId *object_id,
2456 AranyaRank old_rank,
2457 AranyaRank new_rank);
2458
2490 const struct AranyaTeamId *team,
2491 const struct AranyaObjectId *object_id,
2492 AranyaRank old_rank,
2493 AranyaRank new_rank,
2494 struct AranyaExtError *__ext_err);
2495
2507 const struct AranyaTeamId *team,
2508 const struct AranyaObjectId *object_id,
2509 AranyaRank *__output);
2510
2522 const struct AranyaTeamId *team,
2523 const struct AranyaObjectId *object_id,
2524 AranyaRank *__output,
2525 struct AranyaExtError *__ext_err);
2526
2542 const struct AranyaTeamId *team,
2543 const struct AranyaDeviceId *device,
2544 const struct AranyaLabelId *label_id,
2545 AranyaChanOp op);
2546
2562 const struct AranyaTeamId *team,
2563 const struct AranyaDeviceId *device,
2564 const struct AranyaLabelId *label_id,
2565 AranyaChanOp op,
2566 struct AranyaExtError *__ext_err);
2567
2583 const struct AranyaTeamId *team,
2584 const struct AranyaDeviceId *device,
2585 const struct AranyaLabelId *label_id);
2586
2602 const struct AranyaTeamId *team,
2603 const struct AranyaDeviceId *device,
2604 const struct AranyaLabelId *label_id,
2605 struct AranyaExtError *__ext_err);
2606
2617 const struct AranyaCreateTeamConfig *cfg,
2618 struct AranyaTeamId *__output);
2619
2630 const struct AranyaCreateTeamConfig *cfg,
2631 struct AranyaTeamId *__output,
2632 struct AranyaExtError *__ext_err);
2633
2646 uint8_t *buf,
2647 size_t buf_len);
2648
2661 uint8_t *buf,
2662 size_t buf_len,
2663 struct AranyaExtError *__ext_err);
2664
2685ARANYA_DEPRECATED_MSG("PSK seeds are no longer used with mTLS authentication")
2686AranyaError aranya_encrypt_psk_seed_for_peer(const struct AranyaClient *client,
2687 const struct AranyaTeamId *team_id,
2688 const uint8_t *public_key_bundle,
2689 size_t public_key_bundle_len,
2690 uint8_t *seed,
2691 size_t *seed_len);
2692
2713ARANYA_DEPRECATED_MSG("PSK seeds are no longer used with mTLS authentication")
2714AranyaError aranya_encrypt_psk_seed_for_peer_ext(const struct AranyaClient *client,
2715 const struct AranyaTeamId *team_id,
2716 const uint8_t *public_key_bundle,
2717 size_t public_key_bundle_len,
2718 uint8_t *seed,
2719 size_t *seed_len,
2720 struct AranyaExtError *__ext_err);
2721
2730AranyaError aranya_add_team(const struct AranyaClient *client,
2731 const struct AranyaAddTeamConfig *cfg);
2732
2741AranyaError aranya_add_team_ext(const struct AranyaClient *client,
2742 const struct AranyaAddTeamConfig *cfg,
2743 struct AranyaExtError *__ext_err);
2744
2753AranyaError aranya_remove_team(const struct AranyaClient *client,
2754 const struct AranyaTeamId *team);
2755
2764AranyaError aranya_remove_team_ext(const struct AranyaClient *client,
2765 const struct AranyaTeamId *team,
2766 struct AranyaExtError *__ext_err);
2767
2776AranyaError aranya_close_team(const struct AranyaClient *client,
2777 const struct AranyaTeamId *team);
2778
2787AranyaError aranya_close_team_ext(const struct AranyaClient *client,
2788 const struct AranyaTeamId *team,
2789 struct AranyaExtError *__ext_err);
2790
2807AranyaError aranya_add_device_to_team(const struct AranyaClient *client,
2808 const struct AranyaTeamId *team,
2809 const uint8_t *keybundle,
2810 size_t keybundle_len,
2811 const struct AranyaRoleId *role_id,
2812 AranyaRank rank);
2813
2830AranyaError aranya_add_device_to_team_ext(const struct AranyaClient *client,
2831 const struct AranyaTeamId *team,
2832 const uint8_t *keybundle,
2833 size_t keybundle_len,
2834 const struct AranyaRoleId *role_id,
2835 AranyaRank rank,
2836 struct AranyaExtError *__ext_err);
2837
2851AranyaError aranya_remove_device_from_team(const struct AranyaClient *client,
2852 const struct AranyaTeamId *team,
2853 const struct AranyaDeviceId *device);
2854
2868AranyaError aranya_remove_device_from_team_ext(const struct AranyaClient *client,
2869 const struct AranyaTeamId *team,
2870 const struct AranyaDeviceId *device,
2871 struct AranyaExtError *__ext_err);
2872
2887AranyaError aranya_add_sync_peer(const struct AranyaClient *client,
2888 const struct AranyaTeamId *team,
2889 AranyaAddr addr,
2890 const struct AranyaSyncPeerConfig *config);
2891
2906AranyaError aranya_add_sync_peer_ext(const struct AranyaClient *client,
2907 const struct AranyaTeamId *team,
2908 AranyaAddr addr,
2909 const struct AranyaSyncPeerConfig *config,
2910 struct AranyaExtError *__ext_err);
2911
2921AranyaError aranya_remove_sync_peer(const struct AranyaClient *client,
2922 const struct AranyaTeamId *team,
2923 AranyaAddr addr);
2924
2934AranyaError aranya_remove_sync_peer_ext(const struct AranyaClient *client,
2935 const struct AranyaTeamId *team,
2936 AranyaAddr addr,
2937 struct AranyaExtError *__ext_err);
2938
2939#if defined(ENABLE_ARANYA_PREVIEW)
2952AranyaError aranya_sync_hello_subscribe(const struct AranyaClient *client,
2953 const struct AranyaTeamId *team,
2954 AranyaAddr peer,
2955 const struct AranyaHelloSubscriptionConfig *config);
2956#endif
2957
2958#if defined(ENABLE_ARANYA_PREVIEW)
2971AranyaError aranya_sync_hello_subscribe_ext(const struct AranyaClient *client,
2972 const struct AranyaTeamId *team,
2973 AranyaAddr peer,
2974 const struct AranyaHelloSubscriptionConfig *config,
2975 struct AranyaExtError *__ext_err);
2976#endif
2977
2978#if defined(ENABLE_ARANYA_PREVIEW)
2990AranyaError aranya_sync_hello_unsubscribe(const struct AranyaClient *client,
2991 const struct AranyaTeamId *team,
2992 AranyaAddr peer);
2993#endif
2994
2995#if defined(ENABLE_ARANYA_PREVIEW)
3007AranyaError aranya_sync_hello_unsubscribe_ext(const struct AranyaClient *client,
3008 const struct AranyaTeamId *team,
3009 AranyaAddr peer,
3010 struct AranyaExtError *__ext_err);
3011#endif
3012
3034 const struct AranyaTeamId *team,
3035 AranyaAddr addr,
3036 const struct AranyaSyncPeerConfig *config);
3037
3059 const struct AranyaTeamId *team,
3060 AranyaAddr addr,
3061 const struct AranyaSyncPeerConfig *config,
3062 struct AranyaExtError *__ext_err);
3063
3075 const struct AranyaTeamId *team,
3076 struct AranyaDeviceId *devices,
3077 size_t *devices_len);
3078
3090 const struct AranyaTeamId *team,
3091 struct AranyaDeviceId *devices,
3092 size_t *devices_len,
3093 struct AranyaExtError *__ext_err);
3094
3108 const struct AranyaTeamId *team,
3109 const struct AranyaDeviceId *device,
3110 struct AranyaRole *role_out,
3111 bool *has_role);
3112
3126 const struct AranyaTeamId *team,
3127 const struct AranyaDeviceId *device,
3128 struct AranyaRole *role_out,
3129 bool *has_role,
3130 struct AranyaExtError *__ext_err);
3131
3144 const struct AranyaTeamId *team,
3145 const struct AranyaDeviceId *device,
3146 uint8_t *public_key_bundle,
3147 size_t *public_key_bundle_len);
3148
3161 const struct AranyaTeamId *team,
3162 const struct AranyaDeviceId *device,
3163 uint8_t *public_key_bundle,
3164 size_t *public_key_bundle_len,
3165 struct AranyaExtError *__ext_err);
3166
3182ARANYA_DEPRECATED_MSG("Use `aranya_team_device_public_key_bundle`.")
3183AranyaError aranya_team_device_keybundle(const struct AranyaClient *client,
3184 const struct AranyaTeamId *team,
3185 const struct AranyaDeviceId *device,
3186 uint8_t *public_key_bundle,
3187 size_t *public_key_bundle_len);
3188
3204ARANYA_DEPRECATED_MSG("Use `aranya_team_device_public_key_bundle`.")
3205AranyaError aranya_team_device_keybundle_ext(const struct AranyaClient *client,
3206 const struct AranyaTeamId *team,
3207 const struct AranyaDeviceId *device,
3208 uint8_t *public_key_bundle,
3209 size_t *public_key_bundle_len,
3210 struct AranyaExtError *__ext_err);
3211
3227AranyaError aranya_team_device_label_assignments(const struct AranyaClient *client,
3228 const struct AranyaTeamId *team,
3229 const struct AranyaDeviceId *device,
3230 struct AranyaLabelId *labels,
3231 size_t *labels_len);
3232
3248AranyaError aranya_team_device_label_assignments_ext(const struct AranyaClient *client,
3249 const struct AranyaTeamId *team,
3250 const struct AranyaDeviceId *device,
3251 struct AranyaLabelId *labels,
3252 size_t *labels_len,
3253 struct AranyaExtError *__ext_err);
3254
3269AranyaError aranya_team_labels(const struct AranyaClient *client,
3270 const struct AranyaTeamId *team,
3271 struct AranyaLabelId *labels,
3272 size_t *labels_len);
3273
3288AranyaError aranya_team_labels_ext(const struct AranyaClient *client,
3289 const struct AranyaTeamId *team,
3290 struct AranyaLabelId *labels,
3291 size_t *labels_len,
3292 struct AranyaExtError *__ext_err);
3293
3307AranyaError aranya_team_label(const struct AranyaClient *client,
3308 const struct AranyaTeamId *team,
3309 const struct AranyaLabelId *label_id,
3310 struct AranyaLabel *label_out);
3311
3325AranyaError aranya_team_label_ext(const struct AranyaClient *client,
3326 const struct AranyaTeamId *team,
3327 const struct AranyaLabelId *label_id,
3328 struct AranyaLabel *label_out,
3329 struct AranyaExtError *__ext_err);
3330
3341AranyaError aranya_team_label_exists(const struct AranyaClient *client,
3342 const struct AranyaTeamId *team,
3343 const struct AranyaLabelId *label,
3344 bool *__output);
3345
3356AranyaError aranya_team_label_exists_ext(const struct AranyaClient *client,
3357 const struct AranyaTeamId *team,
3358 const struct AranyaLabelId *label,
3359 bool *__output,
3360 struct AranyaExtError *__ext_err);
3361
3362#if defined(ENABLE_ARANYA_AFC)
3371#endif
3372
3373#if defined(ENABLE_ARANYA_AFC)
3382#endif
3383
3384#if defined(ENABLE_ARANYA_AFC)
3393#endif
3394
3395#if defined(ENABLE_ARANYA_AFC)
3404#endif
3405
3406#if defined(ENABLE_ARANYA_AFC)
3428 const struct AranyaTeamId *team_id,
3429 const struct AranyaDeviceId *peer_id,
3430 const struct AranyaLabelId *label_id,
3431 struct AranyaAfcSendChannel *channel,
3432 struct AranyaAfcCtrlMsg *control);
3433#endif
3434
3435#if defined(ENABLE_ARANYA_AFC)
3457 const struct AranyaTeamId *team_id,
3458 const struct AranyaDeviceId *peer_id,
3459 const struct AranyaLabelId *label_id,
3460 struct AranyaAfcSendChannel *channel,
3461 struct AranyaAfcCtrlMsg *control,
3462 struct AranyaExtError *__ext_err);
3463#endif
3464
3465#if defined(ENABLE_ARANYA_AFC)
3478 const struct AranyaTeamId *team_id,
3479 const uint8_t *control,
3480 size_t control_len,
3481 struct AranyaAfcReceiveChannel *channel);
3482#endif
3483
3484#if defined(ENABLE_ARANYA_AFC)
3497 const struct AranyaTeamId *team_id,
3498 const uint8_t *control,
3499 size_t control_len,
3500 struct AranyaAfcReceiveChannel *channel,
3501 struct AranyaExtError *__ext_err);
3502#endif
3503
3504#if defined(ENABLE_ARANYA_AFC)
3512 struct AranyaLabelId *__output);
3513#endif
3514
3515#if defined(ENABLE_ARANYA_AFC)
3523 struct AranyaLabelId *__output,
3524 struct AranyaExtError *__ext_err);
3525#endif
3526
3527#if defined(ENABLE_ARANYA_AFC)
3535 struct AranyaAfcChannelId *__output);
3536#endif
3537
3538#if defined(ENABLE_ARANYA_AFC)
3546 struct AranyaAfcChannelId *__output,
3547 struct AranyaExtError *__ext_err);
3548#endif
3549
3550#if defined(ENABLE_ARANYA_AFC)
3558 struct AranyaDeviceId *__output);
3559#endif
3560
3561#if defined(ENABLE_ARANYA_AFC)
3569 struct AranyaDeviceId *__output,
3570 struct AranyaExtError *__ext_err);
3571#endif
3572
3573#if defined(ENABLE_ARANYA_AFC)
3581 struct AranyaLabelId *__output);
3582#endif
3583
3584#if defined(ENABLE_ARANYA_AFC)
3592 struct AranyaLabelId *__output,
3593 struct AranyaExtError *__ext_err);
3594#endif
3595
3596#if defined(ENABLE_ARANYA_AFC)
3604 struct AranyaAfcChannelId *__output);
3605#endif
3606
3607#if defined(ENABLE_ARANYA_AFC)
3615 struct AranyaAfcChannelId *__output,
3616 struct AranyaExtError *__ext_err);
3617#endif
3618
3619#if defined(ENABLE_ARANYA_AFC)
3627 struct AranyaDeviceId *__output);
3628#endif
3629
3630#if defined(ENABLE_ARANYA_AFC)
3638 struct AranyaDeviceId *__output,
3639 struct AranyaExtError *__ext_err);
3640#endif
3641
3642#if defined(ENABLE_ARANYA_AFC)
3653 const uint8_t **ptr,
3654 size_t *len);
3655#endif
3656
3657#if defined(ENABLE_ARANYA_AFC)
3668 const uint8_t **ptr,
3669 size_t *len,
3670 struct AranyaExtError *__ext_err);
3671#endif
3672
3673#if defined(ENABLE_ARANYA_AFC)
3682 const struct AranyaAfcSeq *seq2,
3683 int *__output);
3684#endif
3685
3686#if defined(ENABLE_ARANYA_AFC)
3695 const struct AranyaAfcSeq *seq2,
3696 int *__output,
3697 struct AranyaExtError *__ext_err);
3698#endif
3699
3700#if defined(ENABLE_ARANYA_AFC)
3712 const uint8_t *plaintext,
3713 size_t plaintext_len,
3714 uint8_t *dst,
3715 size_t *dst_len);
3716#endif
3717
3718#if defined(ENABLE_ARANYA_AFC)
3730 const uint8_t *plaintext,
3731 size_t plaintext_len,
3732 uint8_t *dst,
3733 size_t *dst_len,
3734 struct AranyaExtError *__ext_err);
3735#endif
3736
3737#if defined(ENABLE_ARANYA_AFC)
3750 const uint8_t *ciphertext,
3751 size_t ciphertext_len,
3752 uint8_t *dst,
3753 size_t *dst_len,
3754 struct AranyaAfcSeq *seq);
3755#endif
3756
3757#if defined(ENABLE_ARANYA_AFC)
3770 const uint8_t *ciphertext,
3771 size_t ciphertext_len,
3772 uint8_t *dst,
3773 size_t *dst_len,
3774 struct AranyaAfcSeq *seq,
3775 struct AranyaExtError *__ext_err);
3776#endif
3777
3778#if defined(ENABLE_ARANYA_AFC)
3791 struct AranyaAfcSendChannel *channel);
3792#endif
3793
3794#if defined(ENABLE_ARANYA_AFC)
3807 struct AranyaAfcSendChannel *channel,
3808 struct AranyaExtError *__ext_err);
3809#endif
3810
3811#if defined(ENABLE_ARANYA_AFC)
3824 struct AranyaAfcReceiveChannel *channel);
3825#endif
3826
3827#if defined(ENABLE_ARANYA_AFC)
3840 struct AranyaAfcReceiveChannel *channel,
3841 struct AranyaExtError *__ext_err);
3842#endif
3843
3844#ifdef __cplusplus
3845} // extern "C"
3846#endif // __cplusplus
3847
3848#endif /* ARANYA_CLIENT_H */
3849
3850
const char * AranyaRoleName
A role name.
Definition aranya-client.h:650
#define ARANYA_SEED_IKM_LEN
The size in bytes of a PSK seed IKM.
Definition aranya-client.h:111
AranyaError aranya_afc_ctrl_msg_get_bytes_ext(const struct AranyaAfcCtrlMsg *control, const uint8_t **ptr, size_t *len, struct AranyaExtError *__ext_err)
Returns the raw data for a given `AranyaAfcCtrlMsg`.
AranyaError aranya_afc_channel_seal_ext(struct AranyaAfcSendChannel *channel, const uint8_t *plaintext, size_t plaintext_len, uint8_t *dst, size_t *dst_len, struct AranyaExtError *__ext_err)
Encrypts and authenticates plaintext, and writes it to dst.
AranyaError aranya_afc_ctrl_msg_get_bytes(const struct AranyaAfcCtrlMsg *control, const uint8_t **ptr, size_t *len)
Returns the raw data for a given `AranyaAfcCtrlMsg`.
#define ARANYA_ID_LEN
The size in bytes of an ID.
Definition aranya-client.h:104
int64_t AranyaRank
A numerical rank used for authorization in the rank-based hierarchy.
Definition aranya-client.h:657
uint64_t AranyaDuration
A type to represent a span of time in nanoseconds.
Definition aranya-client.h:613
AranyaError aranya_afc_send_channel_get_id(const struct AranyaAfcSendChannel *channel, struct AranyaAfcChannelId *__output)
Returns the `AranyaAfcChannelId` for the associated `AranyaAfcSendChannel`.
AranyaError aranya_afc_channel_open_ext(const struct AranyaAfcReceiveChannel *channel, const uint8_t *ciphertext, size_t ciphertext_len, uint8_t *dst, size_t *dst_len, struct AranyaAfcSeq *seq, struct AranyaExtError *__ext_err)
Decrypts and authenticates ciphertext, and writes it to dst.
AranyaError aranya_afc_send_channel_get_id_ext(const struct AranyaAfcSendChannel *channel, struct AranyaAfcChannelId *__output, struct AranyaExtError *__ext_err)
Returns the `AranyaAfcChannelId` for the associated `AranyaAfcSendChannel`.
const char * AranyaAddr
A network socket address for an Aranya client.
Definition aranya-client.h:678
AranyaError aranya_init_logging(void)
Initializes logging.
AranyaError aranya_afc_receive_channel_get_peer_id_ext(const struct AranyaAfcReceiveChannel *channel, struct AranyaDeviceId *__output, struct AranyaExtError *__ext_err)
Returns the device ID of the peer on the other side of the channel.
AranyaError aranya_afc_receive_channel_get_id(const struct AranyaAfcReceiveChannel *channel, struct AranyaAfcChannelId *__output)
Returns the `AranyaAfcChannelId` for the associated `AranyaAfcReceiveChannel`.
AranyaError aranya_afc_send_channel_get_label_id_ext(const struct AranyaAfcSendChannel *channel, struct AranyaLabelId *__output, struct AranyaExtError *__ext_err)
Returns the `AranyaLabelId` for the associated `AranyaAfcSendChannel`.
AranyaError aranya_afc_receive_channel_get_peer_id(const struct AranyaAfcReceiveChannel *channel, struct AranyaDeviceId *__output)
Returns the device ID of the peer on the other side of the channel.
AranyaError aranya_afc_channel_seal(struct AranyaAfcSendChannel *channel, const uint8_t *plaintext, size_t plaintext_len, uint8_t *dst, size_t *dst_len)
Encrypts and authenticates plaintext, and writes it to dst.
AranyaError aranya_afc_send_channel_get_label_id(const struct AranyaAfcSendChannel *channel, struct AranyaLabelId *__output)
Returns the `AranyaLabelId` for the associated `AranyaAfcSendChannel`.
AranyaError aranya_add_perm_to_role_ext(const struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaRoleId *role, AranyaPermission perm, struct AranyaExtError *__ext_err)
Add a permission to a role.
AranyaError aranya_afc_seq_cmp_ext(const struct AranyaAfcSeq *seq1, const struct AranyaAfcSeq *seq2, int *__output, struct AranyaExtError *__ext_err)
Returns the three-way comparison between seq1 and seq2.
const char * AranyaLabelName
A label name.
Definition aranya-client.h:664
AranyaError aranya_remove_perm_from_role_ext(const struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaRoleId *role, AranyaPermission perm, struct AranyaExtError *__ext_err)
Remove a permission from a role.
AranyaError aranya_afc_send_channel_get_peer_id(const struct AranyaAfcSendChannel *channel, struct AranyaDeviceId *__output)
Returns the device ID of the peer on the other side of the channel.
AranyaError aranya_afc_seq_cmp(const struct AranyaAfcSeq *seq1, const struct AranyaAfcSeq *seq2, int *__output)
Returns the three-way comparison between seq1 and seq2.
AranyaPermission
Simple permission.
Definition aranya-client.h:219
@ ARANYA_PERMISSION_CAN_USE_AFC
The role can use AFC.
Definition aranya-client.h:283
@ ARANYA_PERMISSION_CREATE_ROLE
The role can create a role.
Definition aranya-client.h:240
@ ARANYA_PERMISSION_TERMINATE_TEAM
The role can terminate the team.
Definition aranya-client.h:232
@ ARANYA_PERMISSION_DELETE_LABEL
The role can delete a label.
Definition aranya-client.h:270
@ ARANYA_PERMISSION_CHANGE_ROLE_PERMS
The role can change permissions on roles.
Definition aranya-client.h:256
@ ARANYA_PERMISSION_DELETE_ROLE
The role can delete a role.
Definition aranya-client.h:244
@ ARANYA_PERMISSION_ADD_DEVICE
The role can add a device to the team.
Definition aranya-client.h:223
@ ARANYA_PERMISSION_CREATE_LABEL
The role can create a label.
Definition aranya-client.h:266
@ ARANYA_PERMISSION_SETUP_DEFAULT_ROLE
The role can set up default roles.
Definition aranya-client.h:262
@ ARANYA_PERMISSION_REMOVE_DEVICE
The role can remove a device from the team.
Definition aranya-client.h:227
@ ARANYA_PERMISSION_CREATE_AFC_UNI_CHANNEL
The role can create a unidirectional AFC channel.
Definition aranya-client.h:287
@ ARANYA_PERMISSION_ASSIGN_LABEL
The role can assign a label to a device.
Definition aranya-client.h:274
@ ARANYA_PERMISSION_ASSIGN_ROLE
The role can assign a role to other devices.
Definition aranya-client.h:248
@ ARANYA_PERMISSION_REVOKE_LABEL
The role can revoke a label from a device.
Definition aranya-client.h:278
@ ARANYA_PERMISSION_CHANGE_RANK
The role can change the rank of objects.
Definition aranya-client.h:236
@ ARANYA_PERMISSION_REVOKE_ROLE
The role can revoke a role from other devices.
Definition aranya-client.h:252
AranyaError aranya_init_logging_ext(struct AranyaExtError *__ext_err)
Initializes logging.
AranyaError aranya_add_perm_to_role(const struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaRoleId *role, AranyaPermission perm)
Add a permission to a role.
AranyaError aranya_afc_receive_channel_get_label_id(const struct AranyaAfcReceiveChannel *channel, struct AranyaLabelId *__output)
Returns the `AranyaLabelId` for the associated `AranyaAfcReceiveChannel`.
AranyaError
An error code.
Definition aranya-client.h:137
@ ARANYA_ERROR_INVALID_ARGUMENT
Invalid argument.
Definition aranya-client.h:153
@ ARANYA_ERROR_CONFIG
Unable to create configuration info.
Definition aranya-client.h:192
@ ARANYA_ERROR_IPC
Could not send request to daemon.
Definition aranya-client.h:173
@ ARANYA_ERROR_INVALID_UTF8
Invalid UTF-8.
Definition aranya-client.h:165
@ ARANYA_ERROR_TIMEOUT
Timed out.
Definition aranya-client.h:149
@ ARANYA_ERROR_BUFFER_TOO_SMALL
Buffer is too small.
Definition aranya-client.h:161
@ ARANYA_ERROR_BUG
Internal bug discovered.
Definition aranya-client.h:145
@ ARANYA_ERROR_INVALID_ADDR
Invalid Address.
Definition aranya-client.h:169
@ ARANYA_ERROR_SERIALIZATION
Serialization error.
Definition aranya-client.h:196
@ ARANYA_ERROR_SUCCESS
Success.
Definition aranya-client.h:141
@ ARANYA_ERROR_NOT_ENABLED
Component is not enabled.
Definition aranya-client.h:157
@ ARANYA_ERROR_OTHER
Some other error occurred.
Definition aranya-client.h:204
@ ARANYA_ERROR_ARANYA
An Aranya error.
Definition aranya-client.h:177
@ ARANYA_ERROR_CLOSED
A connection got unexpectedly closed.
Definition aranya-client.h:188
@ ARANYA_ERROR_WOULD_BLOCK
Tried to poll an endpoint but nothing received yet.
Definition aranya-client.h:184
@ ARANYA_ERROR_DOES_NOT_EXIST
The requested resource does not exist.
Definition aranya-client.h:200
AranyaChanOp
Valid channel operations for a label assignment.
Definition aranya-client.h:300
@ ARANYA_CHAN_OP_SEND_ONLY
The device can only send data in channels with this label.
Definition aranya-client.h:310
@ ARANYA_CHAN_OP_SEND_RECV
The device can send or receive data in channels with this label.
Definition aranya-client.h:315
@ ARANYA_CHAN_OP_RECV_ONLY
The device can only receive data in channels with this label.
Definition aranya-client.h:305
AranyaError aranya_afc_channel_open(const struct AranyaAfcReceiveChannel *channel, const uint8_t *ciphertext, size_t ciphertext_len, uint8_t *dst, size_t *dst_len, struct AranyaAfcSeq *seq)
Decrypts and authenticates ciphertext, and writes it to dst.
AranyaError aranya_afc_send_channel_get_peer_id_ext(const struct AranyaAfcSendChannel *channel, struct AranyaDeviceId *__output, struct AranyaExtError *__ext_err)
Returns the device ID of the peer on the other side of the channel.
AranyaError aranya_remove_perm_from_role(const struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaRoleId *role, AranyaPermission perm)
Remove a permission from a role.
AranyaError aranya_afc_receive_channel_get_id_ext(const struct AranyaAfcReceiveChannel *channel, struct AranyaAfcChannelId *__output, struct AranyaExtError *__ext_err)
Returns the `AranyaAfcChannelId` for the associated `AranyaAfcReceiveChannel`.
AranyaError aranya_afc_receive_channel_get_label_id_ext(const struct AranyaAfcReceiveChannel *channel, struct AranyaLabelId *__output, struct AranyaExtError *__ext_err)
Returns the `AranyaLabelId` for the associated `AranyaAfcReceiveChannel`.
A builder for initializing an `AranyaAddTeamConfig`.
Definition aranya-client.h:528
Team configuration used when joining a team.
Definition aranya-client.h:561
A builder for initializing an `AranyaAddTeamQuicSyncConfig`.
Definition aranya-client.h:457
QUIC syncer configuration.
Definition aranya-client.h:516
Channel ID for AFC channel.
Definition aranya-client.h:745
An AFC Control Message, used to create the other end of a channel.
Definition aranya-client.h:715
AranyaError aranya_afc_ctrl_msg_cleanup(struct AranyaAfcCtrlMsg *ptr)
Releases any resources associated with ptr.
An AFC Receiving Channel Object.
Definition aranya-client.h:698
AranyaError aranya_afc_receive_channel_cleanup(struct AranyaAfcReceiveChannel *ptr)
Releases any resources associated with ptr.
An AFC Sending Channel Object.
Definition aranya-client.h:684
AranyaError aranya_afc_send_channel_cleanup(struct AranyaAfcSendChannel *ptr)
Releases any resources associated with ptr.
An AFC Sequence Number, for reordering messages.
Definition aranya-client.h:731
AranyaError aranya_afc_seq_cleanup(struct AranyaAfcSeq *ptr)
Releases any resources associated with ptr.
Configuration info builder for an Aranya client config `AranyaClientConfig`.
Definition aranya-client.h:441
Configuration info for Aranya.
Definition aranya-client.h:377
A handle to an Aranya Client.
Definition aranya-client.h:363
AranyaError aranya_afc_send_channel_delete_ext(const struct AranyaClient *client, struct AranyaAfcSendChannel *channel, struct AranyaExtError *__ext_err)
Removes an `AranyaAfcSendChannel` from use.
AranyaError aranya_afc_accept_channel_ext(const struct AranyaClient *client, const struct AranyaTeamId *team_id, const uint8_t *control, size_t control_len, struct AranyaAfcReceiveChannel *channel, struct AranyaExtError *__ext_err)
Accept a receive-only AFC channel from by a peer by processing a control message.
AranyaError aranya_assign_label_ext(const struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaDeviceId *device, const struct AranyaLabelId *label_id, AranyaChanOp op, struct AranyaExtError *__ext_err)
Assign a label to a device so that it can be used for a channel.
AranyaError aranya_sync_now_ext(const struct AranyaClient *client, const struct AranyaTeamId *team, AranyaAddr addr, const struct AranyaSyncPeerConfig *config, struct AranyaExtError *__ext_err)
Sync with peer immediately.
AranyaError aranya_delete_label(const struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaLabelId *label_id)
Delete a channel label.
AranyaError aranya_change_role_ext(const struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaDeviceId *device, const struct AranyaRoleId *old_role, const struct AranyaRoleId *new_role, struct AranyaExtError *__ext_err)
Changes the role on a device.
AranyaError aranya_afc_accept_channel(const struct AranyaClient *client, const struct AranyaTeamId *team_id, const uint8_t *control, size_t control_len, struct AranyaAfcReceiveChannel *channel)
Accept a receive-only AFC channel from by a peer by processing a control message.
AranyaError aranya_revoke_role(const struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaDeviceId *device, const struct AranyaRoleId *role_id)
Revoke a role from a device.
AranyaError aranya_sync_now(const struct AranyaClient *client, const struct AranyaTeamId *team, AranyaAddr addr, const struct AranyaSyncPeerConfig *config)
Sync with peer immediately.
AranyaError aranya_change_rank_ext(const struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaObjectId *object_id, AranyaRank old_rank, AranyaRank new_rank, struct AranyaExtError *__ext_err)
Change the rank of an object (device or label).
AranyaError aranya_delete_label_ext(const struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaLabelId *label_id, struct AranyaExtError *__ext_err)
Delete a channel label.
AranyaError aranya_revoke_label(const struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaDeviceId *device, const struct AranyaLabelId *label_id)
Revoke a label from a device.
AranyaError aranya_setup_default_roles(struct AranyaClient *client, const struct AranyaTeamId *team, struct AranyaRole *roles_out, size_t *roles_len)
Setup default roles on team.
AranyaError aranya_team_device_public_key_bundle_ext(const struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaDeviceId *device, uint8_t *public_key_bundle, size_t *public_key_bundle_len, struct AranyaExtError *__ext_err)
Query device's public key bundle.
AranyaError aranya_team_devices_ext(const struct AranyaClient *client, const struct AranyaTeamId *team, struct AranyaDeviceId *devices, size_t *devices_len, struct AranyaExtError *__ext_err)
Query devices on team.
AranyaError aranya_client_cleanup(struct AranyaClient *ptr)
Releases any resources associated with ptr.
AranyaError aranya_revoke_label_ext(const struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaDeviceId *device, const struct AranyaLabelId *label_id, struct AranyaExtError *__ext_err)
Revoke a label from a device.
AranyaError aranya_team_roles(const struct AranyaClient *client, const struct AranyaTeamId *team, struct AranyaRole *roles_out, size_t *roles_out_len)
Returns all of the roles for this team.
AranyaError aranya_team_device_role_ext(const struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaDeviceId *device, struct AranyaRole *role_out, bool *has_role, struct AranyaExtError *__ext_err)
Returns the role assigned to the device, if any.
AranyaError aranya_team_device_public_key_bundle(const struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaDeviceId *device, uint8_t *public_key_bundle, size_t *public_key_bundle_len)
Query device's public key bundle.
AranyaError aranya_setup_default_roles_ext(struct AranyaClient *client, const struct AranyaTeamId *team, struct AranyaRole *roles_out, size_t *roles_len, struct AranyaExtError *__ext_err)
Setup default roles on team.
AranyaError aranya_query_role_perms_ext(const struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaRoleId *role, AranyaPermission *perms_out, size_t *perms_len, struct AranyaExtError *__ext_err)
Query all permissions assigned to a role.
AranyaError aranya_team_devices(const struct AranyaClient *client, const struct AranyaTeamId *team, struct AranyaDeviceId *devices, size_t *devices_len)
Query devices on team.
AranyaError aranya_afc_create_channel_ext(const struct AranyaClient *client, const struct AranyaTeamId *team_id, const struct AranyaDeviceId *peer_id, const struct AranyaLabelId *label_id, struct AranyaAfcSendChannel *channel, struct AranyaAfcCtrlMsg *control, struct AranyaExtError *__ext_err)
Create a send-only AFC channel between this device and a peer.
AranyaError aranya_afc_create_channel(const struct AranyaClient *client, const struct AranyaTeamId *team_id, const struct AranyaDeviceId *peer_id, const struct AranyaLabelId *label_id, struct AranyaAfcSendChannel *channel, struct AranyaAfcCtrlMsg *control)
Create a send-only AFC channel between this device and a peer.
AranyaError aranya_create_team(const struct AranyaClient *client, const struct AranyaCreateTeamConfig *cfg, struct AranyaTeamId *__output)
Create a new graph/team with the current device as the owner.
AranyaError aranya_client_init(struct AranyaClient *client, const struct AranyaClientConfig *config)
Initializes a new client instance.
AranyaError aranya_get_public_key_bundle(const struct AranyaClient *client, uint8_t *public_key_bundle, size_t *public_key_bundle_len)
Gets the public key bundle for this device.
AranyaError aranya_change_rank(const struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaObjectId *object_id, AranyaRank old_rank, AranyaRank new_rank)
Change the rank of an object (device or label).
AranyaError aranya_delete_role(const struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaRoleId *role)
Delete a role.
AranyaError aranya_get_public_key_bundle_ext(const struct AranyaClient *client, uint8_t *public_key_bundle, size_t *public_key_bundle_len, struct AranyaExtError *__ext_err)
Gets the public key bundle for this device.
AranyaError aranya_afc_receive_channel_delete(const struct AranyaClient *client, struct AranyaAfcReceiveChannel *channel)
Removes an `AranyaAfcReceiveChannel` from use.
AranyaError aranya_team_device_role(const struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaDeviceId *device, struct AranyaRole *role_out, bool *has_role)
Returns the role assigned to the device, if any.
AranyaError aranya_assign_role(const struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaDeviceId *device, const struct AranyaRoleId *role_id)
Assign a role to a device.
AranyaError aranya_create_role(const struct AranyaClient *client, const struct AranyaTeamId *team, AranyaRoleName role_name, AranyaRank rank, struct AranyaRole *role_out)
Create a role.
AranyaError aranya_rand(const struct AranyaClient *client, uint8_t *buf, size_t buf_len)
Return random bytes from Aranya's CSPRNG.
AranyaError aranya_create_team_ext(const struct AranyaClient *client, const struct AranyaCreateTeamConfig *cfg, struct AranyaTeamId *__output, struct AranyaExtError *__ext_err)
Create a new graph/team with the current device as the owner.
AranyaError aranya_query_role_perms(const struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaRoleId *role, AranyaPermission *perms_out, size_t *perms_len)
Query all permissions assigned to a role.
AranyaError aranya_create_role_ext(const struct AranyaClient *client, const struct AranyaTeamId *team, AranyaRoleName role_name, AranyaRank rank, struct AranyaRole *role_out, struct AranyaExtError *__ext_err)
Create a role.
AranyaError aranya_team_roles_ext(const struct AranyaClient *client, const struct AranyaTeamId *team, struct AranyaRole *roles_out, size_t *roles_out_len, struct AranyaExtError *__ext_err)
Returns all of the roles for this team.
AranyaError aranya_afc_receive_channel_delete_ext(const struct AranyaClient *client, struct AranyaAfcReceiveChannel *channel, struct AranyaExtError *__ext_err)
Removes an `AranyaAfcReceiveChannel` from use.
AranyaError aranya_delete_role_ext(const struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaRoleId *role, struct AranyaExtError *__ext_err)
Delete a role.
AranyaError aranya_change_role(const struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaDeviceId *device, const struct AranyaRoleId *old_role, const struct AranyaRoleId *new_role)
Changes the role on a device.
AranyaError aranya_query_rank(const struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaObjectId *object_id, AranyaRank *__output)
Query the rank of an object.
AranyaError aranya_rand_ext(const struct AranyaClient *client, uint8_t *buf, size_t buf_len, struct AranyaExtError *__ext_err)
Return random bytes from Aranya's CSPRNG.
AranyaError aranya_client_init_ext(struct AranyaClient *client, const struct AranyaClientConfig *config, struct AranyaExtError *__ext_err)
Initializes a new client instance.
AranyaError aranya_create_label(const struct AranyaClient *client, const struct AranyaTeamId *team, AranyaLabelName name, AranyaRank rank, struct AranyaLabelId *__output)
Create a channel label with an explicit rank.
AranyaError aranya_query_rank_ext(const struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaObjectId *object_id, AranyaRank *__output, struct AranyaExtError *__ext_err)
Query the rank of an object.
AranyaError aranya_assign_role_ext(const struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaDeviceId *device, const struct AranyaRoleId *role_id, struct AranyaExtError *__ext_err)
Assign a role to a device.
AranyaError aranya_revoke_role_ext(const struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaDeviceId *device, const struct AranyaRoleId *role_id, struct AranyaExtError *__ext_err)
Revoke a role from a device.
AranyaError aranya_afc_send_channel_delete(const struct AranyaClient *client, struct AranyaAfcSendChannel *channel)
Removes an `AranyaAfcSendChannel` from use.
AranyaError aranya_assign_label(const struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaDeviceId *device, const struct AranyaLabelId *label_id, AranyaChanOp op)
Assign a label to a device so that it can be used for a channel.
AranyaError aranya_create_label_ext(const struct AranyaClient *client, const struct AranyaTeamId *team, AranyaLabelName name, AranyaRank rank, struct AranyaLabelId *__output, struct AranyaExtError *__ext_err)
Create a channel label with an explicit rank.
A builder for initializing a `AranyaCreateTeamConfig`.
Definition aranya-client.h:540
Team configuration used when creating a team.
Definition aranya-client.h:575
A builder for initializing a `AranyaCreateTeamQuicSyncConfig`.
Definition aranya-client.h:473
QUIC syncer configuration.
Definition aranya-client.h:500
Device ID.
Definition aranya-client.h:415
Functions suffixed with _ext accept an extra struct AranyaExtError *ext_err parameter for extended er...
Definition aranya-client.h:351
AranyaError aranya_ext_error_msg_ext(const struct AranyaExtError *err, char *msg, size_t *msg_len, struct AranyaExtError *__ext_err)
Copies the extended error's message into msg.
AranyaError aranya_ext_error_init(struct AranyaExtError *out)
Initializes AranyaExtError.
AranyaError aranya_ext_error_msg(const struct AranyaExtError *err, char *msg, size_t *msg_len)
Copies the extended error's message into msg.
AranyaError aranya_ext_error_cleanup(struct AranyaExtError *ptr)
Releases any resources associated with ptr.
Cryptographically secure Aranya ID.
Definition aranya-client.h:401
AranyaError aranya_id_from_str(const char *str, struct AranyaId *__output)
Decodes str into an `AranyaId`.
AranyaError aranya_id_to_str(const struct AranyaId *id, char *str, size_t *str_len)
Writes the human-readable encoding of id to str.
Label ID.
Definition aranya-client.h:434
A label.
Definition aranya-client.h:422
AranyaError aranya_label_get_author(const struct AranyaLabel *label, struct AranyaDeviceId *__output)
Get the author of a label.
AranyaError aranya_label_get_id(const struct AranyaLabel *label, struct AranyaLabelId *__output)
Get ID of label.
AranyaError aranya_label_cleanup(struct AranyaLabel *ptr)
Releases any resources associated with ptr.
AranyaError aranya_label_get_name(const struct AranyaLabel *label, const char **__output)
Get name of label.
An identifier for any object with a unique Aranya ID defined in the policy.
Definition aranya-client.h:669
Uniquely identifies a `AranyaRole`.
Definition aranya-client.h:408
A role.
Definition aranya-client.h:389
AranyaError aranya_role_get_author(const struct AranyaRole *role, struct AranyaDeviceId *__output)
Get the author of a role.
AranyaError aranya_role_get_id_ext(const struct AranyaRole *role, struct AranyaRoleId *__output, struct AranyaExtError *__ext_err)
Get ID of role.
AranyaError aranya_role_cleanup(struct AranyaRole *ptr)
Releases any resources associated with ptr.
AranyaError aranya_role_get_name(const struct AranyaRole *role, const char **__output)
Get name of role.
AranyaError aranya_role_get_id(const struct AranyaRole *role, struct AranyaRoleId *__output)
Get ID of role.
AranyaError aranya_role_get_author_ext(const struct AranyaRole *role, struct AranyaDeviceId *__output, struct AranyaExtError *__ext_err)
Get the author of a role.
Builder for a Sync Peer config `AranyaSyncPeerConfig`.
Definition aranya-client.h:587
Sync Peer config.
Definition aranya-client.h:601
Team ID.
Definition aranya-client.h:552