Silva, 26, who has played 10 One-day internationals, takes the place of opener Michael Vandort.
Ganegama, 25, has also won a place in the 14-man squad after bowling well for the 'A' team during their current tour of India.
Ganegama has played four One-day internationals but no Test matches.
He has been included for the Test matches only and will be replaced by left-armer Ruchira Perera for the five-match One-day series which follows.
Former captain Marvan Atapattu has opted out of the Test leg of the tour after back surgery in May.
Mahela Jayawardene was officially confirmed as captain for both legs of the tour with Kumar Sangakkara named as vice-captain.
Sri Lanka leave for New Zealand on November 25 and play one warm-up game against Otago before the first Test starting on December 7.
The six-week tour includes Test matches in Christchurch and Wellington, five One-day internationals and two Twenty20 internationals.
Test team: Mahela Jayawardene (captain), Kumar Sangakkara, Sanath Jayasuriya, Upul Tharanga, Tillakaratne Dilshan, Chamara Kapugedera, Chamara Silva, Prasanna Jayawardene, Farvez Maharoof, Chaminda Vaas, Lasith Malinga, Dilhara Fernando, Akalanka Ganegama, Muttiah Muralitharan.
One-day team: Jayawardene, Sangakkara, Jayasuriya, Tharanga, Marvan Atapattu, Dilshan, Kapugedera, Silva, Maharoof, Vaas, Malinga, Fernando, Muralitharan, Malinga Bandara, Ruchira Perera.