uniqueid 0.1.0

Generates a unique hash/identifier for a system given a set of parameters.
Documentation

uniqueid 🔍

Generates a unique hash/identifier for a system given a set of parameters.

Example usage

use uniqueid;

pub fn main() {
    let data = vec![
        identifier_data!("Vendor", "Intel"),
        identifier_data!("Model", "Xeon E5-2670"),
    ];

    let type_ = identifier_type!(CPU, data);

    let identifier = uniqueid::identifier::Identifier::new(Some("HWID"), vec![type_.clone()]);

    let output = identifier.build(false); // true = hash

    println!("{}", output); // Outputs HWID[CPU(Vendor=Intel, Model=Xeon E5-2670)]
}

Specification

UniqueID uses its own specification.

The spec consists of three parts:
    - The Identifier; []
    - The IdentifierType; ()
    - The IdentifierTypeData; (a=b, ...)
      
A basic identifier would look like this: 

NAME[TYPE(a=b, ...)]

NAME - Optional, defaults to None
TYPE - The type of identifier, e.g. CPU, GPU, etc.
DATA - The data for the identifier, e.g. Vendor=Intel, Model=Xeon E5-2670

This is a very basic example of an identifier, and most use cases will have more types, more data, and hash the output.

Roadmap

  • Calculate the HWID based on the system's hardware in the library without needing to specify it manually.
  • Add support for other hashing algorithms. (currently only supports SHA3-512)

License

This software is licensed under the GNU General Public License v3.0

For more information, see the LICENSE file in the root directory of this project or see here.