Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/myomikron/rcp
Random checksum protocol
https://github.com/myomikron/rcp
Last synced: 19 days ago
JSON representation
Random checksum protocol
- Host: GitHub
- URL: https://github.com/myomikron/rcp
- Owner: myOmikron
- License: gpl-2.0
- Created: 2021-03-03T17:16:03.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2022-08-05T13:00:43.000Z (over 2 years ago)
- Last Synced: 2024-10-28T16:56:46.847Z (21 days ago)
- Language: Python
- Size: 19.5 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# RCP - Random Checksum Protocol
RCP's main use case is providing a checksum to validate requests between HTTP Servers,
therefore each server has a shared secret to which all the others have to have access to.## How to implement
- Put all your data from your POST or GET Request in a dictionary
- Sort the dictionary alphanumerical by its keys.
- Concat its values to the respective key and join them: `key1value1key2value2...`
- Note: When using non str values:
- bool is represented as "true" or "false"
- Append the shared secret of your target
- Append current utc timestamp (unix epoch - just seconds)
- Optional: Add a salt (this may be the method's endpoint): `saltkey1value1...`
- Hash with SHA512
- Represent the hash as hex string (lowercase)
- The endpoint you're trying to reach should have the position stated, where the checksum should be put.
This may be as a key in a POST request, or via Authentication Header.**Watch out**
As this protocol heavily depends on retrieving the correct time,
it may be required to enable NTP on your servers.## How to use the reference implementation
**Get checksum**
```python
from rc_protocol import get_checksumSHARED_SECRET = "s3cr3t_p@ssw0rd"
my_dict = {
"key1": "value1",
"key2": "value2"
}checksum = get_checksum(my_dict, SHARED_SECRET)
```**Validate checksum**
```python
from rc_protocol import validate_checksumSHARED_SECRET = "s3cr3t_p@ssw0rd"
my_dict = {
"key1": "value1",
"key2": "value2",
}
checksum = "d0690e3c924e18bad866e2867698be75f64bdc6e809b76ffedb5c5095c9fbe15d36636b2df1fc47d2a3f348aea272ffc2fed4dc8ee08e0d13631ef646e1648c4"if validate_checksum(my_dict, checksum, SHARED_SECRET):
do_random_things()
else:
print("You shall not pass.")
```## Implementations
- Python [rc-protocol](https://pypi.org/project/rc-protocol/)
- Go [gorcp](https://github.com/myOmikron/gorcp)
- Rust [rc_protocol](https://crates.io/crates/rc_protocol)