I spoke to GM about this. Keys supposedly have to be made by the dealer.
The FOBs all depend on the year of your car. 97-00 are the same and 01-04 are the same but you cannot have an 02 FOB for a 97 for example. The 97-00 have the stupid passive on/off button that is annoying. It is very easy to program.
Turn on your car but do not start the engine. Next turn off your radio. You keep pushing options until the DIC is clear...... after the language option. Once it's clear you hold down the reset button for about three seconds. You will see on the DIC either tire training or fob training, I can't remember which one comes first but if tires come first, hit the k/m button and then fob training will appear.
Hit reset and it should say "hold down lock+unlock on 1st FOB." Hold down the lock and unlock buttons for over 13 seconds and you should hear the horn honk and see the DIC display "1st FOB learned," then it will prompt you for the second FOB. At this point either program the second one, or leave it alone until you see it say "exit programming." Then you are done.
Key FOBs for 01-04 are dirt cheap. Key FOBs for 97-00 are expensive as hell in comparrison.