raccoondad Your pin code is the method used for the security chip to release your phones encryption key, if I'm not mistaken, the password is hashed and applied onto the released key to make the 'true' key that's used (I may be wrong on this, but I'm fairly sure a transformation is done onto the released token from the Titan M chip based on your password/pin)
Yes, pretty much. Somewhat simplified:
hashed_pw = SCRYPT(your password or PIN, some rather weak scrypt parameters)
weaver_auth = HASH(hashed_pw + some constant string)
weaver_value = TryGetValueFromTitanMChip(user_profile_slot, weaver_auth)
enc_key = HASH(weaver_value + hashed_pw + some other constant string)
In actuality, the enc_key here is just used to decrypt the actual encryption key, but that detail is not important assuming all keys have been generated with strong entropy. Either way, it is impossible to get or derive the encryption key without knowing both your password or PIN and having been able to obtain the weaver token from the security chip.
raccoondad Regardless, the method you are showing has little entropy, no key divervation method, and is fundamentally not secure or protect from your threat model.
It has no entropy. The OS necessarily knows what the solution is. But that doesn't mean the method is useless as a secondary authentication method, say, instead of using a fingerprint. The primary authentication method still must be a password or PIN, but hopefully you only have to enter that when you start the phone.