In contracts/eosio.system/eosio.system.cpp, the following function has the owner and active authority parameters commented:
void native::newaccount( account_name creator,
account_name newact
/* no need to parse authorities
const authority& owner,
const authority& active*/ ) {
Note the block commenting around owner/active parameters.
For the ABI, I think the BOOST_PP_SEQ_FOR_EACH macro has some magic here to add these fields to the ABI input even though they are commented.
My question is: how do the owner and active authorities get established if the smart contract doesn't do anything with them? Cleos seems to only call this 1 action (looking at the -d output) so I don't think there is a second action called that sets owner/active separately.
Any general pointers in the right direction are appreciated, my C++ experience is somewhat sparse and is apparently some macro-voodoo going on here I'm not familiar with.