| Crates.io | licensed |
| lib.rs | licensed |
| version | 0.1.1 |
| created_at | 2018-06-10 13:25:32.367219+00 |
| updated_at | 2018-06-10 13:33:58.435096+00 |
| description | licensed is a library to add signed licenses to your binary |
| homepage | https://github.com/ChrisMacNaughton/licensed |
| repository | |
| max_upload_size | |
| id | 69460 |
| size | 27,819 |
Licensed is a library for adding digitally signed licenses to your binary projects in a simple, extensible manner. In addition to providing library functions for usei n your code, it provides key generation and license signing binaries in the crate.
To use licensed, you will need to generate keys to use for your
signing. These keys should be kept private as they are used to
proove that a license is valid.
If you want to generate keys in the example directory, you can
invioke gen_keys with a single argument, as shown below through
the cargo run command:
cargo run --bin=gen_keys -- examples
The above command will generatae two files in the target directory:
private.pkspublic.pksprivate.pks is actually the complete key material for the keys,
but is accompanied by public.pks as well to make including the
public key material into a destination binary easier.
licensed expects a certain format for its license files, such as:
{
"features": [
"string key",
"another feature"
],
"expires": "2014-11-28T12:00:09Z"
}
expires, shown above, is an optional field that will be checked,
if present to ensure license validity.
Once you have the above file saved into, for example, license.json,
you can run:
gen_license license.json $KEY_PATH/private.pks $OUTPUT_PATH
The generated file at $OUTPUT_PATH will look like the above json with a null byte and the signature appended.
Validating a license in your binary is as simple as:
let filename = "path/to/license";
let license_file = read(filename)?;
let license = licensed::License::new(&license_file)
.with_public_key(&PUBLIC_KEY)
.build()?;
if license.valid() {
println!("The providded license is valid");
} else {
println!("The provided license is invalid");
}