# keyforge95
This library is a cross-plattform generator and validator for Windows 95 keys written in Rust. As it turned out, however, it supposedly works for all Microsoft products that require a 10-digit product key in the following format: _`XXX-XXXXXXX`_
It is only sporadically developed as it is solely a learning project for me and does not have particularly significant practical use.
⚠️ **Note**: keyforge95 and I are in no way associated with Microsoft or their products. Only [publicly available information](https://en.wikipedia.org/wiki/Product_key#Examples) from the internet has been used to create this project. It neither bypasses effective copy measures nor constitutes a "crack." The purpose of this repository, from my perspective, is solely to gain experience in programming and enhance my skills and knowledge.
## Compatible Software
- Access ADI 95
- Hell Bender
- Office 7.0b
- Office Professional 95
- Plus! 95
- Plus! 98
- Return to Arcade
- Windows 95
- Windows CE Toolkit for Visual Basic 5
- Windows CE Toolkit for Visual C++ 5
- Windows NT 4.0 Server
- Windows NT 4.0 Workstation
- Visual Basic Standard 4.0
- Visual SourceSafe 4.0
## Usage
This library only has two public functions: _`generate_product_key()`_ and _`validate_product_key()`_
### Generate
After adding keyforge95 to your project, just use _`generate_product_key()`_ to generate a valid product key as a String.
```rs
use keyforge95::generate_product_key;
let product_key: String = generate_product_key();
println("Generated product key: {}", product_key);
```
### Validate
To check the validity of a key, add keyforge95 to your project and use _`validate_product_key("key")`_. This function returns a bool. It is important that the right formatting (_`XXX-XXXXXXX`_) is used for the product key. Otherwise the validation will fail.
```rs
use keyforge95::validate_product_key;
let product_key: &str = "000-0000000"
match validate_product_key(product_key) {
true => println!("Valid key: {}", product_key),
false => println!("Invalid key: {}", product_key)
}
```
## Contributing
Anyone who wants to contribute is more than welcome to do so. I would be delighted to learn from the contributions of other users. If you find a bug or have a feature in mind that you think would be useful, please feel free to create a pull request on GitHub.
If you decide to fork this project, please make sure to adhere to the [license](https://github.com/nandolawson/keyforge95/blob/master/LICENSE). Your involvement and feedback are highly appreciated!