Manticore is The Manticore Project’s Go library of offensive and defensive security primitives. It is the foundation that most of our tools build on, so each release tends to focus on making one or two of those primitives more correct and more pleasant to use. In v1.0.7 I focused on the keycredential package: extending its cryptographic key support, tidying up its internal structure, and aligning one piece of its API with the naming conventions used across the rest of the library.
BCrypt ECC keys
The main change in this release is support for BCRYPT_ECC_KEY. KeyCredentials, used by features such as Windows Hello for Business and shadow-credential attack techniques, carry a serialized public key blob. Previously the keycredential package handled RSA blobs, but elliptic-curve keys serialized in the BCrypt ECC key format were not covered.
With v1.0.7, BCRYPT_ECC_KEY is implemented, so KeyCredentials backed by ECC public keys can be parsed and represented properly. This covers directories where ECC-based key credentials are present, so tools layered on top of Manticore no longer have to special-case those entries. This change resolves issue #47.
KeyCredential refactor and naming consistency
Alongside the new key type, I refactored the keycredential package and its structs. The goal here was internal clarity rather than new behavior: organizing the structures so that the different key blob types live alongside each other coherently, and making the package easier to extend the next time a new key format needs to be added.
The release also renames a function for the sake of consistency: ParseDNWithBinary becomes UnmarshalDNWithBinary. Across Manticore, deserialization routines that turn a wire or string representation into a structured value follow the Unmarshal... convention, so this rename brings the DN-with-binary helper in line with the rest of the library. It is a breaking change for any code calling the old name, but a mechanical one: update the call site to the new identifier.