This is an alpha (pre-release) package. It's still in development, but has
basic functionality fleshed out. Please refer to the README
of the
project to get started.
- Features
NistBeaconValue
- Add RNG function to convert output?
- Minor documentation changes
- Features
NistBeaconValue
- Added
json
andxml
as properties (replacesto_json()
andto_xml()
)
- Added
- Name changes
- Changed from
py_nist_beacon
tonistbeacon
- Changed from
NistRandomnessBeacon
toNistBeacon
- Changed from
NistRandomnessBeaconValue
toNistBeaconValue
- Changed from
- Features
NistRandomnessBeacon
- Added a
get_first_record
method. An optional boolean flag nameddownload
allows the caller to either use the local first record object, or to download the first record directly from the NIST beacon.
- Added a
- Added a section on installation.
- Updated
CONTRIBUTING
- Re-do
PHONY
targets inMakefile
- Update
travis
build steps to include3.5-dev
andnightly
- Badges made to point to their release branches
- General
- Lots of documentation added through
docstrings
! 📝
- Lots of documentation added through
NistRandomnessBeacon
- The beacon now understands how to check the chain. Using the
chain_check
method on the beacon with a giventimestamp
value the NIST Randomness Beacon chain can be verified for integrity purposes. 🔗
- The beacon now understands how to check the chain. Using the
@classmethod
def chain_check(cls, timestamp: int) -> bool:
"""
Given a record timestamp, verify the chain integrity.
:param timestamp: UNIX time / POSIX time / Epoch time
:return: 'True' if the timestamp fits the chain. 'False' otherwise.
"""
NistRandomnessBeaconValue
⚠️ All properties of the beacon have been placed behind@property
decorators to minimize possible manipulation⚠️ verify_signature
has been removed from beacon values. Replaced withvalid_signature
- Introduced
valid_signature
as abool
property. Replacesverify_signature
- Added a
verify_signature
toNistRandomnessBeaconValue
objects. This method returns aTrue
orFalse
after verifying the provided record. The record is verified using two steps:- First, using a combination of input data of the record, a simple message
is packed to create a message. That message is then used in combination with
the record's reported
signature_value
and the known NIST Beacon X.509 certificate. This certificate is available for download, but is baked into the application as follows:- Original CER file as a string:
nist_beacon_constants.py - NIST_CER_FILE
- Original Public Key as a string:
nist_beacon_constants.py - NIST_RSA_KEY
- Hard copy of
beacon.cer
is provided at the root of the project
- Original CER file as a string:
- Second, the
signature_value
is ran through asha512
hash to confirm theoutput_value
is correct on the record. - If either of the steps are found to be invalid,
verify_signature
will return aFalse
result.
- First, using a combination of input data of the record, a simple message
is packed to create a message. That message is then used in combination with
the record's reported
- Added
to_xml
,to_json
, andfrom_json
methods on beacon values
- Initial PyPI release package