EPP SDKs

Verisign encourages the use of documented EPP extensions to facilitate interoperability. Verisign registers the set of EPP extensions it has documented in IANA's EPP Extension Registry. Some of these EPP extensions may be subject to Verisign patents and are licensed under terms indicated in Verisign's associated IPR declarations. Please see Verisign Licensing Declarations for a full list.

Verisign implements to the entire Extensible Provisioning Protocol (EPP) standard. Verisign has developed EPP SDKs, guides, and tools to help you develop your client applications for integration with the .com.net Registry Shared Registry Service (SRS), the Name Store platform (.tv, .cc, .jobs, new gTLDs), the .name Registry, and for use with non-Verisign registries that implement to the EPP 1.0 RFCs:

EPP SDK Bundles

Verisign offers SDKs in Java and C++, where the EPP mappings and extensions supported by each language vary. The Java EPP SDK is built from a general core (gen) that implements RFC 5730 and RFC 5734. Developers have the option of using each mapping or extension independently or in a bundle, combined for convenience:

Verisign Bundle includes all mappings and extensions for integration with the .com and .net Registries, the Name Store platform (.tv, .cc, .jobs, new gTLDs and Domain Name Suggestion Service), and the .name Registry.

Verisign Bundles

The following table links to Java-based Verisign Bundle Software Development Kits (SDKs) for interfacing with the .com and .net Registries, the Name Store platform (.tv, .cc, .jobs, new gTLDs and Domain Name Suggestion Service), and the .name Registry. The Verisign Bundle requires Java 1.6 U18 and above.

1. Made setting of the XML entity resolver, based on the com.verisign.epp.util.EPPSchemaCachingEntityResolver, a configurable setting using the optional EPP.UseEntityResolver config property, with a default value of true.
2. Added relaxed contact validation support used to transition a thin registry to thick. Relaxed validation leverages a new contact XSD (contact-1.0-relaxed.xsd) that makes the <contact:name>, <contact:addr>, <contact:city>, <contact:street>, <contact:cc>, and <contact:email> elements optional. The new optional EPP.Contact.RelaxedValidation epp.config property must be set to true for the client and server stub to use and validate to the relaxed schema.
3. Replaced reference of com.sun.org.apache.xerces.internal.dom.DocumentImpl to org.apache.xerces.dom.DocumentImpl in EPPUtil.
4. Added logging to EPPGenHandler.handleEvent(EPPEvent, Object).
5. Added getFirstPostalInfo() : EPPContactPostalDefinition to EPPContactInfoResp and EPPContact.
6. Added EPPDomainInfoResp.getContactByType(String) : EPPDomainContact, EPPDomainInfoResp.getAdminContact() : EPPDomainContact, EPPDomainInfoResp.getTechContact() : EPPDomainContact, and EPPDomainInfoResp.getBillingContact() : EPPDomainContact.
7. Added com.verisign.epp.pool.EPPClientTransIdGenerator interface, concrete com.verisign.epp.pool.ClientTransIdGenerator class, and the optional clientTransIdGenerator pool property to define the concrete EPPClientTransIdGenerator to use for generating client transaction identifiers for the login and logout commands for the pool.
8. Added EPPSession.sendMessage(EPPMessage) to help in testing a negative test case, but also as a potentially useful method for sending any EPPMessage to the session.
9. Added more debug logging to EPPSSLImpl.
10. Added validation of the EPPMessage type in the EPPDispatcher and the EPPByteArrayDispatcher to ensure that receiving an EPPResponse or EPPGreeting in the server will return an appropriate error message.
11. Added additional SSL Protocol options in the comments of the EPP.SSLProtocol property and set the default protocol to TLSv1 in the epp.config.
12. Updated the EPPUtil.decodeBooleanAttr(Element, String) method to properly identify a non-existent attribute and to enhance the format of the EPPDecodeException value to easier support.
13. Made the refundable and grace-period attributes of com.verisign.epp.codec.fee.v09.EPPFeeValue truly optional with no default value, while the applied attribute remained with the "immediate" default value based on the default value in the XSD. Added "has" methods for these attributes, changed the refundable to a Boolean to support a null value, and changed the encode and decode methods to handle non-existent attributes.
14. Added conveniance constructor that takes both a EPPFeeValue and a currency (String) parameter for the com.verisign.epp.codec.fee.v09 classes of EPPFeeTransform, EPPFeeCreate, EPPFeeRenew, EPPFeeTransfer, and EPPFeeUpdate.
15. Added methods for passing and returning the Base64 encoded signed code into com.verisign.epp.codec.verificationcode.EPPEncodedSignedCodeValue. The new EPPEncodedSignedCodeValue methods: decodeValue(byte[]), decodeValue(String), encodeValue(boolean) : String, encodeValueByteArray() : byte[], and encodeValueByteArray(boolean) : byte[] where added.
16. Added support for running the com.verisign.epp.verificationcode.china.ChinaVerificationCodeTst test without the VSP pool and by loading the DNVC from the dnvc.b64 file and the RNVC from the rnvc.b64 file.

1. Added support for running the com.verisign.epp.verificationcode.china.ChinaVerificationCodeTst test without the VSP pool and by loading the DNVC from the dnvc.b64 file and the RNVC from the rnvc.b64 file.
2. Added support for draft-brown-epp-fees-07.
3. Added additional SSL Protocol options in the comments of the EPP.SSLProtocol property and set the default protocol to TLSv1 in the epp.config.
4. Changed the com.verisign.epp.codec.verificationcode.EPPSignedCode.decode(byte[] aSignedCodeArray) : void from protected to public.
5. Updated the EPPUtil.decodeBooleanAttr(Element, String) method to properly identify a non-existent attribute and to enhance the format of the EPPDecodeException value to easier support.
6. Made the refundable and grace-period attributes of com.verisign.epp.codec.fee.v09.EPPFeeValue truly optional with no default value, while the applied attribute remained with the "immediate" default value based on the default value in the XSD.
7. Added convenient constructor that takes both a EPPFeeValue and a currency (String) parameter for the com.verisign.epp.codec.fee.v09 classes of EPPFeeTransform, EPPFeeCreate, EPPFeeRenew, EPPFeeTransfer, and EPPFeeUpdate.
8. Added methods for passing and returning the Base64 encoded signed code into com.verisign.epp.codec.verificationcode.EPPEncodedSignedCodeValue.

1. Added hasTrustAnchor(): boolean and getTrustAnchor() : TrustAnchor to EPPSignedCode for getting the matching trust anchor from the PKIXParameters upon successful validation.
2. Added support for draft-zhou-eppext-reseller-mapping-02 and draft-zhou-eppext-reseller-02.
3. Added the com.verisign.epp.verificationcode.china.ChinaVerificationCodeTst along with associated changes to the build and stub server behavior to support a test of the 7 predefined verification flows that will work against the Stub Server and the OT&E servers.
4. Added com.verisign.epp.pool.EPPSessionPool.hasSystemSessionPool(String) : boolean method to determine if a specific system session pool existed.
5. Fixed com.verisign.epp.codec.verificationcode.EPPVerificationCode.getVspId() : int to return UNDEFINED instead of throwing NumberFormatException when the vspId is not an integer.
6. Added validation of the verification code (vsp-id and code types) using formatted trust anchor alias names in the trust store.

1. Added the EPPSession.sendPacket(byte []) method and EPPXMLStream.writePacket(byte[], OutputStream) to enable sending a packet through the session within having to go through the Codec.
2. Added the Change Poll Mapping (changepoll), that complies with draft-gould-change-poll-02, to the Verisign Bundle.
3. Added the Registry Fee Extension (fee), that complies with draft-brown-epp-fees-03 and draft-brown-epp-fees-04, to the Verisign Bundle.
4. Added the Allocation Token Extension (allocationtoken), that complies with draft-gould-allocation-token-02, to the Verisign Bundle.
5. Updated Launch Phase Extension (launch) to comply with draft-ietf-eppext-launchphase-03 and subsequently draft-ietf-eppext-launchphase-05, by adding support for the Trademark Check Form.
6. Added the IDN Map Extension (idnmap), that complies with draft-ietf-eppext-idnmap-01, to the Verisign Bundle.
7. Added the subID attribute in the info element of NameSuggestion.
8. Added the IDN Table Mapping (idntable), that complies with draft-gould-idn-table-02, to the Verisign Bundle.

1. Switched to be dependent on Java 6 instead of Java 5. The launch extension already was dependent on Java 6 and with the new dependency on the use of JAXB, the entire SDK is being moved to be dependent on Java 6.
2. Fixed a bug with encoding the XSD dateTime type in EPPUtil by using 4 digit precision for the seconds. The fix was to use a default of 3 digit precision (milliseconds) on the encode and to use JAXB DatatypeConverter.parseDateTime for parsing the dataTime value. Access methods were added (getTimeInstantFormat(): String and setTimeInstantFormat(String)) to enable changing the encoding format if needed.

1. Updated to the 25nov13 test SMD's (SMD's without whitespace) and test SMD Revocation List. The SMD Revocation List was converted from UTF-8 to ASCII.
2. Updated to support draft-tan-epp-launchphase-12 by updating the launch-1.0.xsd, updating the draft-tan-epp-launchphase.txt in the doc directory, and updating the code and tests to support the new validatorID optional attribute.
3. Fixed the XML namespace handling in the com.verisign.epp.codec.registry.EPPRegistryRegEx class and some of the client classes to com.verisign.epp.codec.registry.EPPRegistryRegEx.
4. Changed com.verisign.epp.codec.signedMark.EPPSignedMark to handle XML parsing exception. This is specially required while parsing the XML obtained from the encoded SMD.

1. Split com.verisign.epp.codec.EPPSignedMark into two classes EPPSignedMark and EPPEncodedSignedMark to handle the validation of SMD’s with and without extra whitespace.
2. Created SMD InputStream constructor to EPPEncodedSignedMark to directly parse SMD’s.
3. Added support for Revoked SMD validation
4. Added inclusion and testing of ICANN sample SMD’s
5. Added support for more than one CRL to support SMD’s created by the SDK and ICANN sample SMD’s.
6. Added Domain Info Form and the Related Info Form to the Related Domain info command.
7. Created com.verisign.epp.interfaces.EPPRelatedDomain class to support all of the Related Domain Extension commands.
8. Updated com.verisign.epp.namestore.interfaces.NSDomain class to extend com.verisign.epp.interfaces.EPPRelatedDomain for adding support for the new Related Domain Extension commands.
9. Added new “uTLD” attribute in grid for Suggestion.
10. Added new “restricted” status to Suggestion.
11. Broadened the tld type in Suggestion to support Unicode values.

1. First external release of the Verisign Bundle that:
a. Includes the mappings / extensions in the Name Store/SRS Bundle.
b. Includes the mappings / extensions in the Name Bundle.
c. Includes the Launch Extension in the Launch EPP SDK.
d. Adds the Registry Mapping.
e. Adds the Related Domain Extension.
f. Updates the Suggestion Extension.

Development Tools

The EPP Tool is a set of definitive, context-based interactive examples intended for developers to help them create and troubleshoot their code design. The tool behaves as though it is a registrar application in the Operations Testing & Evaluation (OT&E) environment. The EPP Tool supports both the Name Store platform (NameStore), the .name Registry (DotName), and the .com .net Registry (Core). The EPP Tool has been enhanced to incorporate features of the Protocol Tool (multiple environments, local installation, customized command values), but keeping the ease of use features of the EPP Tool. The EPP Tool is now available for download for launching on a desktop or installing on a local server. It requires Java 6 or higher and an official Java Keystore for connecting to OT&E or Production.

1. EPPTool source code packaging changed for making it available as open source
2. Support related domain name extension (only CORE) and launch extension (Core and Namestore systems) for the launch phases
3. Support for Registry Info command to auto-discover new gTLDs from Core and Namestore systems
4. Changes to support contact commands in Core system
5. NameSuggestion changes like (1) Support for returning non-English characters in suggested domains (2) Addition of Geo and Creative filters
6. Added DNSSEC extension for Domain Create and Domain Update commands for dotName system
7. Added RGP commands support for Domain and EmailFwd commands for dotname system

VERISIGN, the VERISIGN logo, and other trademarks, service marks, and designs are registered or unregistered trademarks of VeriSign, Inc. and its subsidiaries in the United States and in other countries.