Classe Signature

Estou desenvolvendo uma assiantura digital, e segundo os conceitos um documento pode ser assinado tanto com a chave privada (sendo validado pela chave publica) quanto, assinado com a chave pública e validado com a chave privada.

Porém o que está acontecendo é o seguinte, conforme código abaixo:

if (opcao.equals("1")) { PrivateKey priKey = (PrivateKey)oin.readObject(); oin.close(); //Inicializar geração geradorAss.initSign(priKey); }else if (opcao.equals("2")){ PublicKey pubKey = (PublicKey)oin.readObject(); oin.close(); //Inicializar geração geradorAss.initSign(pubKey); }

O método initiSign espera receber uma PrivateKey. Como posso resover isso?