Class PSCHelper
java.lang.Object
br.ufsc.labsec.signature.signer.a3.CloudHelper
br.ufsc.labsec.signature.signer.a3.PSCHelper
- All Implemented Interfaces:
CertificateInformation
,InformationSigner
,RemoteKeyStore
public class PSCHelper extends CloudHelper
-
Field Summary
Fields Modifier and Type Field Description protected PSC
psc
protected PSC.SignatureScope
scope
protected String
state
protected String
token
protected String
verifier
Fields inherited from class br.ufsc.labsec.signature.signer.a3.CloudHelper
certificate
-
Constructor Summary
-
Method Summary
Modifier and Type Method Description static String
createCodeChallenge(String verifier)
Cria o challenge, que é o hash do verifier(uma string aleatória)static String
createCodeVerifier()
Cria o code verifier(uma string aleatória)String
createSignatureRequestBody(String hash, String hash_alg_OID, String alias)
Retorna o formulario JSON com o hash para ser assinadostatic String
createState(int size)
Gera um valor opaco usado pela aplicação para manter o estado entre a requisição e a resposta.void
generateAccessToken(String code)
Função pública para métodos externos solicitarem um Access Token.String
generateAuthURL(String verifier, String state, PSC.SignatureScope scope)
Cria a URL que será utilizada na requisição para obter autorização do usuárioprotected byte[]
getCert()
Solicita ao servidor do PSC para que retorne o certificado do assinante, através de uma requisição GET.String
getState()
String
getToken()
protected String
parseAccessTokenJSON(String jsonData)
Lê o retorno JSON do método postAccessToken() e obtém o Access Tokenprotected String
parseCertJSON(String jsonData)
Lê o retorno JSON do método postCert() e obtém os bytes do certificado.protected String
parseSigJSON(String jsonData)
Lê o retorno JSON do método postSignature() e obtém os bytes de assinatura.protected String
postAccessToken(String code)
Solicita ao servidor do PSC, através de uma requição POST, para que retorne o token de acesso, que será utilizado para as próximas requisições.void
setState(String state)
void
setToken(String token)
void
setVerifier(String verifier)
byte[]
sign(byte[] data, String signatureSuite)
Pede para o PSC realizar uma assinatura RAWMethods inherited from class br.ufsc.labsec.signature.signer.a3.CloudHelper
getCertificate
-
Field Details
-
psc
-
token
-
state
-
scope
-
verifier
-
-
Constructor Details
-
PSCHelper
Seleciona qual PSC deve ser utilizado para gerar a assinatura- Parameters:
psc
- String representando o Prestador de Serviço de Confiança a ser utilizado para a assinatura
-
-
Method Details
-
sign
Pede para o PSC realizar uma assinatura RAW- Parameters:
data
- Informação para ser assinadasignatureSuite
- OID da suite de assinatura- Returns:
- Bytes da assinatura
- Throws:
SignerException
-
getCert
Solicita ao servidor do PSC para que retorne o certificado do assinante, através de uma requisição GET. As requisições e suas respostas são regulamentadas no DOC-ICP-17, disponível em link- Specified by:
getCert
in classCloudHelper
- Returns:
- byte[] JSON encapsulando o certificado armazenado pelo PSC.
- Throws:
PscException
- Caso ocorra algum erro na comunicação com o PSC
-
postAccessToken
Solicita ao servidor do PSC, através de uma requição POST, para que retorne o token de acesso, que será utilizado para as próximas requisições. As requisições e suas respostas são regulamentadas no DOC-ICP-17, disponível em link- Parameters:
code
- Código de autorização gerado pelo PSC- Returns:
- Access Token gerado
- Throws:
PscException
- Quando ocorre falha na requisição
-
parseAccessTokenJSON
Lê o retorno JSON do método postAccessToken() e obtém o Access Token- Parameters:
jsonData
- Dados retornados por postAccessToken()- Returns:
- Access Token
- See Also:
postAccessToken(String)
-
parseSigJSON
Lê o retorno JSON do método postSignature() e obtém os bytes de assinatura.- Parameters:
jsonData
- Dados retornados por postSignature()- Returns:
- Bytes de assinatura em base hexadecimal
-
parseCertJSON
Lê o retorno JSON do método postCert() e obtém os bytes do certificado.- Parameters:
jsonData
- Dados retornados por postCert()- Returns:
- Bytes do certificado em base hexadecimal
- See Also:
getCert()
-
createCodeChallenge
public static String createCodeChallenge(String verifier) throws UnsupportedEncodingException, NoSuchAlgorithmExceptionCria o challenge, que é o hash do verifier(uma string aleatória)- Parameters:
verifier
- A String que será hasheada e usada para verificação- Returns:
- O challenge em forma de String
- Throws:
UnsupportedEncodingException
NoSuchAlgorithmException
- See Also:
- RFC7636
-
createCodeVerifier
Cria o code verifier(uma string aleatória)- Returns:
- O challenge em forma de String
- See Also:
- RFC7636
-
createState
Gera um valor opaco usado pela aplicação para manter o estado entre a requisição e a resposta. O serviço de autorização incluirá este valor ao redirecionar o módulo do usuário de volta ao endereço da aplicação. Este parâmetro deverá ser usado para prevenir ataques de falsificação de requisições entre sites (cross-site request forgery).- Parameters:
size
- O tamanho do state. Valor recomendado: 15- Returns:
- O State
-
generateAuthURL
public String generateAuthURL(String verifier, String state, PSC.SignatureScope scope) throws URISyntaxExceptionCria a URL que será utilizada na requisição para obter autorização do usuário- Parameters:
verifier
- Correspondendo ao code_challenge enviado na Requisição de Código de Autorizaçãostate
- Um valor opaco usado pela aplicação para manter o estado entre a requisição e a resposta. O serviço de autorização incluirá este valor ao redirecionar o módulo do usuário de volta ao endereço da aplicação. Este parâmetro deverá ser usado para prevenir ataques de falsificação de requisições entre sites (cross-site request forgery).scope
- O tipo de autorização que será dada- Returns:
- A URL com o payload
- Throws:
URISyntaxException
- See Also:
- RFC7636
-
createSignatureRequestBody
Retorna o formulario JSON com o hash para ser assinado- Parameters:
hash
- Hash dos dados a serem assinadohash_alg_OID
- O OID em forma de string do algoritmo de hashalias
- O alias legível para o conteudo a ser assinado- Returns:
- A URL com o payload
-
generateAccessToken
Função pública para métodos externos solicitarem um Access Token. Utiliza métodos internos para montar a requisição POST e fazer o parsing do resultado obtido.- Parameters:
code
- Código de autorização gerado pelo PSC- Throws:
PscException
- Caso a requisição POST falhe.
-
getToken
-
setToken
-
getState
-
setState
-
setVerifier
-