|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
java.lang.Object | +--cl.sii.dte.Codigo
Esta clase es utilizada tanto para generar como verificar códigos de autorización de folios (CAF) entregados por el Servicio de Impuestos Internos (SII) a los contribuyentes.
Para generar, instancie la clase y enseguida complete los campos necesarios con las funciones set*, para finalmente firmar el codigo con la funcion sign. Debe tener presente que esta funcionalidad está orientada a SII o para pruebas; un contribuyente no debe usar jamás las funciones set* sobre un CAF entregado por SII.
El elemento XML según el formato definido por SII se obtiene con la función getDOMElement.
Para cargar un codigo puede utilizar la funcion setDOMElement o loadXML dependiendo si el CAF lo tiene en un elemento XML o en un String.
Para verificar el CAF puede utilizar la función verify
| Field Summary | |
private String |
dsaG
|
private String |
dsaP
|
private String |
dsaQ
|
private String |
dsaY
|
private Date |
fecha
|
private Integer |
fin
|
private String |
firmaAlg
|
private byte[] |
firmaValue
|
private Integer |
idk
|
private Integer |
inicio
|
private PublicKey |
llave
|
static org.jdom.output.XMLOutputter |
out
|
private String |
razonSocial
|
private String |
rsaE
|
private String |
rsaM
|
private RUT |
rutEmisor
|
private SimpleDateFormat |
sdf
|
private Integer |
tipo
|
private String |
version
|
private String |
xml
|
| Constructor Summary | |
Codigo()
Al crear la clase Codigo, se auto asigna la versión (1.0) y la fecha a la fecha actual. |
|
| Method Summary | |
private PublicKey |
DOMToKey(org.jdom.Element sKey)
Obtiene una llave pública desde un elemento XML según la especificación de SII |
boolean |
filled()
Verifica si los datos necesarios para el código han sido completados (no considera la firma) |
private String |
genCode()
Genera el string que se debe firmar por SII en este CAF |
private org.jdom.Element |
genDOMCode()
Genera un elemento con los datos a firmar del CAF, el cual es usado por genCode para obtener el string a firmar. |
private org.jdom.Element |
genDOMCode(org.jdom.Namespace ns)
Genera el elemento que representa este CAF. |
org.jdom.Element |
getDOMElement(String tagName,
org.jdom.Namespace ns)
Obtiene el CAF en XML con sus namespaces. |
Date |
getFecha()
Obtiene la fecha contenida en el código |
String |
getFechaAsString()
Obtiene la fecha contenida en el código como string |
Integer |
getFinal()
Obtiene el número de folio final del rango que autoriza este CAF |
Integer |
getIdk()
Obtiene el Identificador de la llave del CAF |
Integer |
getInicio()
Obtiene el número de folio inicial del rango que autoriza este CAF |
PublicKey |
getPublicKey()
Obtiene la llave pública del contribuyente que autoriza este código |
protected org.jdom.Element |
getPureDOMElement()
Obtiene el CAF en XML puro, es decir, sin identación ni namespaces. |
String |
getRazonSocial()
|
RUT |
getRutEmisor()
Retorna el RUT del emisor que autoriza este CAF |
Integer |
getTipo()
Obtiene el tipo de documento que autoriza este CAF |
String |
getVersion()
Retorna la versión de esta implementación del CAF |
String |
getXml()
|
private org.jdom.Element |
keyToDOM(PublicKey pKey)
Transforma una llave pública a un elemento XML según la definición de SII |
private org.jdom.Element |
keyToDOM(PublicKey pKey,
org.jdom.Namespace ns)
Transforma una llave pública a un elemento XML según la definición de SII |
void |
loadXML(String data)
Carga un código desde un string. |
void |
setDOMElement(org.jdom.Element data)
Carga un código desde un Elemento XML que contiene un CAF, según la definición de SII |
void |
setFecha(Date fecha)
Asigna el valor de la fecha de autorización del código. |
void |
setFecha(String fecha)
Asigna el valor de la fecha de autorización del código. |
void |
setFinal(Integer fin)
Asigna el número de folio final del rango que autoriza este CAF |
void |
setIdk(Integer idk)
Asigna el Identificador de la llave del CAF |
void |
setInicio(Integer inicio)
Asigna el número de folio inicial del rango que autoriza este CAF |
private void |
setPublicKey(PublicKey key)
Asigna la llave pública del contribuyente que autoriza este CAF |
void |
setPublicKey(X509Certificate cert)
Asigna la llave pública del contribuyente que autoriza este CAF |
void |
setRazonSocial(String string)
|
void |
setRutEmisor(RUT rutEmisor)
Asigna el RUT del emisor que autoriza este CAF |
void |
setRutEmisor(String rut)
Asigna el RUT del emisor a quién autoriza este CAF |
void |
setTipo(Integer tipo)
Asigna el tipo de documento que autoriza este CAF |
void |
setVersion(String version)
Asigna la versión de este CAF |
void |
setXml(String string)
|
void |
sign(PrivateKey pKey)
Autoriza (firma) los valores del código |
boolean |
signed()
Verifica si el código ya ha sido firmado y que además están todos los datos necesarios que verifica la firma |
boolean |
verify(PublicKey verificador)
Verifica la firma que autoriza este código. |
boolean |
verify(X509Certificate cert)
Verifica la firma que autoriza este código. |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
private String firmaAlg
private byte[] firmaValue
private String version
private RUT rutEmisor
private String razonSocial
private Date fecha
private SimpleDateFormat sdf
private Integer tipo
private Integer inicio
private Integer fin
private Integer idk
private PublicKey llave
private String rsaM
private String rsaE
private String dsaY
private String dsaP
private String dsaQ
private String dsaG
public static org.jdom.output.XMLOutputter out
private String xml
| Constructor Detail |
public Codigo()
| Method Detail |
public boolean filled()
signed()public boolean signed()
public String getVersion()
public void setVersion(String version)
version - la versión a asignarpublic RUT getRutEmisor()
public void setRutEmisor(RUT rutEmisor)
rutEmisor - el RUT del emisorpublic String getRazonSocial()
public void setRazonSocial(String string)
string -
public void setRutEmisor(String rut)
throws RUTException
rut - el RUT del emisor como String en formato "xxxxxxxx-x"
RUTException - en caso de que no se sumpla el formato del String o
que el dígito verificador no correspondapublic String getFechaAsString()
getFecha()public Date getFecha()
getFechaAsString()public void setFecha(Date fecha)
setFecha(String)
public void setFecha(String fecha)
throws ParseException
Si se desea modificar la fecha vía esta función, el valor entregado debe tener el mismo formato de la fecha que retorna la función getFecha(), es decir AAAA-MM-DD
fecha - La fecha en formato AAAA-MM-DD
ParseException - en caso que el formato del string no sea
correctogetFechaAsString(),
setFecha(Date)public Integer getTipo()
public void setTipo(Integer tipo)
public Integer getInicio()
public void setInicio(Integer inicio)
public Integer getFinal()
public void setFinal(Integer fin)
public Integer getIdk()
public void setIdk(Integer idk)
public PublicKey getPublicKey()
private void setPublicKey(PublicKey key)
public void setPublicKey(X509Certificate cert)
public boolean verify(PublicKey verificador)
throws CodigoException
verificador - La llave pública del firmante que autorizó este código
CodigoException - en caso de que el algoritmo de la llave
pública del contribuyente o el algoritmo usado en la firma autorizadora,
no sean soportados en esa versión, en caso que el código no tenga todos
los datos necesarios o en caso de que el CAF no esté firmado
public boolean verify(X509Certificate cert)
throws CodigoException
cert - El certificado X509 del firmante que autorizó este código
CodigoException - en caso de que el algoritmo de la llave
pública del contribuyente o el algoritmo usado en la firma autorizadora,
no sean soportados en esa versión, en caso que el código no tenga todos
los datos necesarios o en caso de que el CAF no esté firmado
public void loadXML(String data)
throws CodigoException,
NoSuchAlgorithmException
data - El string con la representación del XML generado
por getDOMElement
CodigoException - en caso que el string de
entrada no esté bien estructurado
NoSuchAlgorithmException - en caso que la JVM no tenga
implementados los algoritmos criptográficos necesarios
public void setDOMElement(org.jdom.Element data)
throws CodigoException,
NoSuchAlgorithmException
data - El elemento XML (DOM Element) del CAF
MalformedCodigoException - en caso que el elemento de
entrada no esté bien estructurado (no corresponda a un CAF)
CodigoException - en caso que el algoritmo de la llave pública
del contribuyente no esté soportado en esta versión u otro problema
en el CAF
NoSuchAlgorithmException - en caso que la JVM no tenga
implementados los algoritmos criptográficos necesarios
private String genCode()
throws CodigoException
CodigoException - en caso que no se hayan completados todos
los datos de este CAF
private org.jdom.Element genDOMCode()
throws CodigoException
CodigoException - en caso que no se hayan completados todos
los datos de este CAF
private org.jdom.Element genDOMCode(org.jdom.Namespace ns)
throws CodigoException
ns - El namespace correspondiente a la especificación del CAF
CodigoException - en caso que el CAF no tenga todos sus
valores o no haya sido firmado aún.
private org.jdom.Element keyToDOM(PublicKey pKey)
throws CodigoException
pKey - la llave pública a transformar
CodigoException - en caso que la llave corresponda a un
algoritmo no soportado por esta versión del CAF
private org.jdom.Element keyToDOM(PublicKey pKey,
org.jdom.Namespace ns)
throws CodigoException
pKey - la llave pública a transformarns - El namespace que corresponde a la definición de SII
CodigoException - en caso que la llave corresponda a un
algoritmo no soportado por esta versión del CAF
private PublicKey DOMToKey(org.jdom.Element sKey)
throws CodigoException,
NoSuchAlgorithmException
sKey - el elemento que contiene la llave
MalformedCodigoException - en caso que el elemento no
contenga una llave pública según la especificación de SII o en caso
que el algoritmo criptográfico correspondiente a la llave no esté
soportado en esta versión de CAF
NoSuchAlgorithmException - en caso que la JVM no soporte los
algoritmos criptográficos necesarios
CodigoException
public void sign(PrivateKey pKey)
throws CodigoException
pKey - la llave privada que se utiliza para firmar
InvalidKeyException - en caso de haber problemas con la llave privada
SignatureException - en caso de haber problemas en el proceso de firma
NoSuchAlgorithmException - en caso que la JVM no soporte los
algoritmos criptográficos necesarios
CodigoException - en caso que el código no tenga todos
los datos necesarios o el algoritmo de la llave pública del
contribuyente no sea soportado por esta versión de CAF
protected org.jdom.Element getPureDOMElement()
throws CodigoException
CodigoException - en caso que no se tengan todos los valores
del CAF o este no esté firmado
public org.jdom.Element getDOMElement(String tagName,
org.jdom.Namespace ns)
throws CodigoException
CodigoException - en caso que no se tengan todos los valores
del CAF o este no esté firmadopublic String getXml()
public void setXml(String string)
string -
|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||