I don't know how you are implementing this/what framework you're using, but I suggest using placeholders that are the length of an actual expected signature, at least when forming the transaction. This is what bitcoinj will do because otherwise you could end up miscalculating the fee, which is based on the final size. See TransactionSignature.dummy() in the API.CoinVault is also using a partially signed transaction format whereby 0-length placeholders are used for missing signatures in the transaction scripts.