A Duo API implementation in C.
Auth - https://www.duosecurity.com/docs/authapi
Admin - https://www.duosecurity.com/docs/adminapi
Accounts - https://www.duosecurity.com/docs/accountsapi
Requires SSL development headers (i.e. libssl-dev
, openssl-devel
, etc.)
$ git clone https://github.com/duosecurity/libduo.git
$ ./configure
$ make
libduo uses the system's OpenSSL library for TLS operations. It will use the highest TLS version available when making API calls to Duo. TLS 1.2 support requires OpenSSL 1.0.1 or higher; TLS 1.3 support requires OpenSSL 1.1.1 or higher.
Auth:
$ DUO_API_HOST=<host-here> DUO_IKEY=<ikey-here> DUO_SKEY=<skey-here> ./test-duologin <username>
Admin: Make sure to Grant Permissions for the Admin API application in the Duo Admin Panel.
$ DUO_API_HOST=<host-here> DUO_IKEY=<ikey-here> DUO_SKEY=<skey-here> ./test-duoapi
duoapi> GET /admin/v1/users [username=testuser]
{'response': [{'desktoptokens': [],
'email': '',
'groups': [],
'last_login': 1455305274,
'notes': '',
'phones': [{'activated': True,
'capabilities': ['push', 'sms', 'phone', 'mobile_otp'],
'extension': '',
'name': '',
'number': '+1123456789',
'phone_id': 'DPWDGGXXXXXXXXXXXXXX',
'platform': 'Google Android',
'postdelay': '',
'predelay': '',
'sms_passcodes_sent': True,
'type': 'Mobile'}],
'realname': '',
'status': 'active',
'tokens': [],
'user_id': 'DU6XLKXXXXXXXXXXXXXX',
'username': 'testuser'}],
'stat': 'OK'}
Install cppcheck
$ cppcheck --quiet --force --suppressions-list=.false_positive.txt --error-exitcode=1 .
.false_positive.txt is a list of errors that were found to not be errors when running the above command for Cppcheck.