Verisign EPP SDKs: Guide And Tools - Verisign

Browser Not Supported.

We recommend using one of the following browsers for a better experience: Chrome, Safari, Edge, Firefox

Channel Resources

EPP SDKs

Verisign encourages the use of documented extensible provisioning protocol (EPP) extensions to facilitate interoperability. Verisign registers the set of EPP extensions it has documented in Internet Assigned Numbers Authority (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 EPP standard. Verisign has developed EPP software development kits (SDKs), guides and tools to help you develop your client applications for integration with the .com and .net (COMNET) and Consolidated Top-Level Domain (CTLD) Shared Registration Systems (SRS). The CTLD SRS supports .cc, .name and new gTLDs 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 COMNET and CTLD registry platforms
  • .com and .net RTK C++ Add-on for use with EPP-RTK-CPP 0.9.2. Available online from Sourceforge: EPP Registry/Registrar Toolkit

EPP Mappings and Extensions

Mapping or Extension Verisign Bundle COM NET RTK C++
Add-on
RFC 5730: Extensible Provisioning Protocol x x
RFC 5731: Extensible Provisioning Protocol (EPP) Domain Name Mapping x x
RFC 5732: Extensible Provisioning Protocol (EPP) Host Mapping x x
RFC 5733: Extensible Provisioning Protocol (EPP) Contact Mapping x x
RFC 5734: Extensible Provisioning Protocol (EPP) Transport Over TCP x x
RFC 3915: Domain Registry Grace Period Mapping (RGP) x x
RFC 4310: Domain Name System (DNS) Security Extensions Mapping x
RFC 5910: Domain Name System (DNS) Security Extensions Mapping x
RFC 8334: Launch Phase Mapping x
RFC 8495: Allocation Token Extension x
RGP Poll Mapping x
ConsoliDate Mapping for the Extensible Provisioning Protocol (Sync) x
NameStore Extension x
IDN Language Tag x x
Email Forwarding Mapping (PDF) x
Defensive Registration Mapping (PDF) x
Personal Registration Extension (PDF) x
NameWatch Mapping (PDF) x
Whois Info Extension x
Low Balance Mapping x x
Client Object Attribute Extension x
Balance Mapping x
RFC 7848: Mark and Signed Mark Mapping x
Verisign Registry Mapping x
Registry Mapping x
Launch Phase Policy Extension x
Login Security Policy Extension x
Related Domain Extension x
RFC 8590: Change Poll Extension x
RFC 8748: Registry Fee Extension x
IDN Map Extension x
IDN Table Mapping x
Verification Code Extension x
China Name Verification Mapping x
RFC 8543: Organization Mapping x
RFC 8544: Organization Extension x
RFC 8807: Login Security Extension x
RFC 9038: Unhandled Namespaces x
Validate Mapping x
RFC 9154: Secure Authorization Information for Transfer x
RFC 9167: Registry Maintenance Notifications x
Use of Internationalized Email Addresses (EAI) x
Time-To-Live (TTL) Extension x
(EPP) Transport Over HTTP (EoH) x
(EPP) Transport Over QUIC (EoQ) x
Back to top

Verisign Bundles 

The following table links to Java-based Verisign Bundle Software Development Kits (SDKs) for interfacing with the COMNET and CTLD registry platforms. The Verisign Bundle requires Java 11 and above.

Version Distribution Documents Notes
1.17.0.2 Unix Binary (TAR)
Unix Source (TAR)
Windows Binary (ZIP)
Windows Source (ZIP)
Programmer's Guide (PDF)
Change Log (TXT)
1. Made contacts optional in the .name object mappings, which included NameWatch and Defensive Registration.
2. Added more detail to the exception thrown from com.verisign.epp.util.EPPDisabledEntityResolver.
3. Disabled com.verisign.epp.interfaces.EPPSessionTst.testClientInitiatedRenegotiation when TLSv1.3 is set, since client initiated re-negotiation is disabled with TLSv1.3.
4. Updated the TTL extension to draft-ietf-regext-epp-ttl-11.
5. Added contributions from Julien Bernard for creating an EPPSession without initially submitting the login command, which can be driven by the new optional session pool property "EPP.SessionPool.initSessionOnMake" or "EPP.SessionPool..initSessionOnMake".
6. Updated the TTL extension to draft-ietf-regext-epp-ttl-16.
7. Added the HTTP transport (EoH) as defined in draft-loffredo-regext-epp-over-http-05 and added to the Verisign Bundle.
8. Implemented draft-ietf-regext-epp-eai-21, which resulted in changing the extension directory from eai to addlemail, changing the Java packages to use addlemail instead of eai, and changing the Java classes to refer to AddlEmail instead of EAI. Support was added for the "primary" attribute of the "email" element.
9. Added the QUIC transport (EoQ) as defined in draft-yao-regext-epp-quic-02, as input into draft-yao-regext-epp-quic-03, and added to the Verisign Bundle.
10. Added EPPHostCreateCmd.hasAddressses(), and EPPHostCreateCmd.addAddress(EPPHostAddress) methods.
11. Added EPPHostAddRemove.hasStatuses(), EPPHostAddRemove.addStatus(EPPHostStatus), EPPHostAddRemove.hasAddressses(), and EPPHostAddRemove.addAddress(EPPHostAddress) methods.
12. Removed deprecated EPPDomainCheckResult.isKnown(), EPPDomainCheckResult.setKnown(boolean), EPPHostCheckResult.isKnown(), and EPPHostCheckResult.setKnown(boolean) methods.
13. Added use of generics to the Vector attributes for the host codec package.
14. Added use of generics to the Vector attributes for the gen codec package.
15. Added use of generics to the Vector attributes for the domain mapping.
16. Added the TTL extension based on draft-ietf-regext-epp-ttl-05.
17. Changed the log level for the com.verisign.epp.codec.verificationcode.EPPSignedCode.validate(PKIXParameters, boolean) exception to error level.
18. Updated from draft-ietf-regext-epp-eai-07 to draft-ietf-regext-epp-eai-17/draft-ietf-regext-epp-eai-19.
19. Updated the signing algorithm from SignatureMethod.RSA_SHA1 to SignatureMethod.RSA_SHA512 in com.verisign.epp.codec.verificationcode.EPPSignedCode and com.verisign.epp.codec.signedMark.EPPSignedMark to address an error with Java 17 and the use of SHA1.
20. Updated all of the signed mark certificate files (signedMark.jks, signedMarkRevoked.jks, and signedMarkTrust.jks) and CRL files (eppsdk.crl) since they expired and to change from RSA_SHA1 to RSA_SHA512.
21. Removed the testing of the ICANN test SMDs, since the CRL is not available to download with the latest set of test SMDs. Once the complete set of SMDs are available, the testing will be re-enabled.
22. Made the signature algorithm configurable for the signed mark in launch and the signed mark in verification code. The new optional epp.config properties include EPP.Launch.signatureAlgorithm and EPP.VerificationCode.signatureAlgorithm, with the default set to RSA_SHA512 (""http://www.w3.org/2001/04/xmldsig-more#rsa-sha512").
1.16.1.0 Unix Binary (TAR)
Unix Source (TAR)
Windows Binary (ZIP)
Windows Source (ZIP)
Programmer's Guide (PDF)
Change Log (TXT)
1. Added inclusion of the pom file in the lib/epp directory.
2. Updated the library dependencies in libs.gradle to the latest version, including commons-codec:commons-codec:1.15,junit:junit:4.13.2,org.slf4j:slf4j-api:1.7.35,org.slf4j:slf4j-log4j12:1.7.35,ch.qos.logback:logback-core:1.2.10,ch.qos.logback:logback-classic:1.2.10,xerces:xercesImpl:2.12.1,xml-apis:xml-apis:2.0.2.
3. Updated draft-ietf-regext-secure-authinfo-transfer to RFC 9154.
4. Updated draft-ietf-regext-epp-registry-maintenance to RFC 9167.
5. Patched the reference of the log4j2 libraries (org.apache.logging.log4j:log4j-slf4j-impl, org.apache.logging.log4j:log4j-core, and org.apache.logging.log4j:log4j-api) from version 2.15.0 to version 2.17.1 to address a log4j2 vulnerability.
6. Added support for draft-ietf-regext-epp-eai-07 to the bundle in the eai project directory.
7. Updated the dependency for the EPP SDK to be Java 11 or higher.
1.15.0.2 Unix Binary (TAR)
Unix Source (TAR)
Windows Binary (ZIP)
Windows Source (ZIP)
Programmer's Guide (PDF)
Change Log (TXT)
1. Patched the reference of the log4j2 libraries (org.apache.logging.log4j:log4j-slf4j-impl, org.apache.logging.log4j:log4j-core, and org.apache.logging.log4j:log4j-api) from version 2.14.1 to version 2.15.0 to address a log4j2 zero-day vulnerability in CVE-2021-44228.
1.15.0.1 Use version 1.15.0.2 Programmer's Guide (PDF)
Change Log (TXT)
1. Removed old v01 version of the registry mapping, and updated the dependencies in launchpolicy and loginsecpolicy.
2. Updated from draft-ietf-regext-epp-registry-maintenance-14 to draft-ietf-regext-epp-registry-maintenance-15.
3. Removed the premium domain extension from the bundle.
4. Added the com.verisign.epp.codec.unhandlednamespaces.v1_0.EPPUnhandledNamespacesMonitor interface and the com.verisign.epp.codec.unhandlednamespaces.v1_0.EPPUnhandledNamespacesMonitorLogger implementation class with integration into the filter classes (EPPUnhandledNamespacesPollMessageFilter and EPPUnhandledNamespacesResponseFilter).
5. Removed old versions of the registry fee extension (draft-brown-epp-fees-06, draft-brown-epp-fees-07, draft-ietf-regext-epp-fees-00, draft-ietf-regext-epp-fees-08).
6. Updated from draft-ietf-regext-secure-authinfo-transfer-04 to draft-ietf-regext-secure-authinfo-transfer-07.
7. Updated draft-ietf-regext-unhandled-namespaces to RFC 9038.
8. Removed the JOBS Contact Extension from the bundle.
9. Added the Maintenance EPP Mapping to the bundle, starting with draft-ietf-regext-epp-registry-maintenance-14.
10. Removed the logger configuration properties from epp.config, which include EPP.LogMode, EPP.LogLevel, EPP.LogCfgFile, and EPP.LogCfgFileWatch.
11. Changed the use of the Log4J 1 API for logging to use SLF4J along with support for multiple backend loggers, including Log4J 1, Log4J 2, and Logback. The backend logger will be auto-configured based on the logger libraries and configuration file included in the classpath. Log4J 2 is set as the default backend logger.
12. Added the testClientInitiatedRenegotation test to com.verisign.epp.interfaces.EPPSessionTst to use the RenogotiationSession to verify that client-initiated renegotiation is disabled.
13. Added setting the jdk.tls.rejectClientInitiatedRenegotiation system propery when launching the Stub Server to disable client-initiated renegotiation.
14. Created the com.verisign.epp.interfaces.RenogotiationSession class to test whether the EPP server support client-initiated renegotiation.
15. Made the getter methods of com.verisign.epp.client.EPPSSLClientSocket public to enable testing client-initiated renegotiation.
16. Added the option of passing the cause for the com.verisign.epp.exception.EPPCommandException.
17. Updated the Login Security Extension to only support the RFC (1.0) version.
18. Added the com/verisign/epp/pool/*Tst.class classes for the testClient and the testClientServer Gradle tasks.
19. Added support for the minAbsoluteTimeout and maxAbsoluteTimeout session pool (single and system) properties to randomize the absolute timeout on a per session basis between the minimum and maximum absolute timeout. The absoluteTimeout property is overridden by the setting of both the minAbsoluteTimeout and maxAbsoluteTimeout properties.
20. Revised the test cases in com.verisign.epp.codec.domain.EPPDomainTst.testDomainUpdate to exactly match the example provided in RFC 5731 and to add a case for an update with the host attribute model.
21. Changed the addresses attribute and associated accessor methods in com.verisign.epp.codec.domain.EPPHostAttr to be Vector<EPPHostAddress> and created the hasAddresses() : boolean and addAddress(EPPHostAddress) methods.
22. Changed the com.verisign.epp.codec.domain.EPPDomainAddRemove servers attributes and the associated accessor methods to use Vector<?> instead of Vector<String> to support both host objects (String) and host attributes (EPPHostAttr). Created the addServer(EPPHostAttr) method for host attribute to match the addServer(String) method for host object.
23. Replaced draft-ietf-regext-unhandled-namespaces-01 with draft-ietf-regext-unhandled-namespaces-03.
24. Updated com.verisign.epp.transport.client.EPPSSLClientSocket and com.verisign.epp.transport.client.EPPPlainClientSocket classes to use the EPP.ConTimeOut property for the connection timeout and the EPP.ReadTimeOut property for the read timeout. Previously, the EPP.ConTimeOut only applied to the read timeout and was not used for the connection timeout. The EPPEnv.getReadTimeOut() method was added for the EPP.ReadTimeOut property. The EPP.ConTimeOut property value will be used for the EPP.ReadTimeOut if the EPP.ReadTimeOut property is not set.
25. Updated the com.verisign.epp.codec.domain.EPPDomainTst to use the new "add" methods for com.verisign.epp.codec.domain.EPPDomainAddRemove.
26. Added "add" for the list attributes and "has" methods for all attributes in com.verisign.epp.codec.domain.EPPDomainAddRemove.
27. Fixed reference of Vector<String> with Vector<EPPDomainStatus> for the statuses in com.verisign.epp.codec.domain.EPPDomainAddRemove.
28. Added use of generics to the Vector attributes of com.verisign.epp.codec.domain.EPPDomainAddRemove.
29. Added EPPUtil.namespaceToNamespaceSuffix(String), EPPUtil.findUnsupportedExtNamespaceSuffixes(List<String>, List<EPPCodecComponent), EPPCommand.findUnsupportedExtNamespaceSuffixes(List<String), EPPResponse.findUnsupportedExtNamespaceSuffixes(List<String) for easier configuration and logging using XML namespace suffixes.
30. Added EPPUtil.findExtNamespaces(List<EPPCodecComponent>, List<String), EPPUtil.findExtNamespaceSuffixes(List<EPPCodecComponent>, List<String), EPPCommand.findExtNamespaces(List<String), EPPCommand.findExtNamespaceSuffixes(List<String), EPPResponse.findExtNamespaces(List<String), EPPResponse.findExtNamespaceSuffixes(List<String) for more quickly identifying command and response extensions.
31. Replaced draft-ietf-regext-login-security-08 and draft-ietf-regext-login-security-09 with epp-login-security-rfc8807.
32. The Pool.[Client|Server|XMLSignature].<property> properties have been replaced with a single property per pool (EPP.[SchemaCachingParserPool|TransformerPool|XMLSignaturePool].size), where the pools are used in both the client and the server. The prior properties will be ignored and the default pool size is set to 10 if the new properties do not exist. Look to the new bundles/verisign/epp.config for use of the new pool properties.
33. Replaced PoolMan with Apache Commons Pool 2 for the parser and transformer pools. The Singleton classes com.verisign.epp.pool.parser.EPPSchemaCachingParserPool, com.verisign.epp.pool.parser.EPPXMLSignatureParserPool, com.verisign.epp.pool.transformer.EPPTransformerPool, and epp.verisign.epp.util.EPPStrictContactParserPool needed to be created along with changes to the com.verisign.epp.util.EPPXMLByteArray, com.verisign.epp.util.EPPXMLStream, and other classes dependent on the pools.
34. Replaced the use of Apache Commons Pool 1 with Apache Commons Pool 2 for use in com.verisign.epp.pool.EPPSessionPool and associated classes. The maxActive pool property is deprecated for the maxTotal property and the initMaxActive property is deprecated for the initMaxTotal property. Removed use of the poolableClassName property.
35. Changed to use gradle 6.4 in gradle-wrapper.properties.
36. Updated from dnsjava version 2.1.9 to version 3.1.0.
37. Added com.verisign.epp.util.EPPUtil.findUnsupportedExtNamespaces(List<String>, List<EPPCodecComponent>), com.verisign.epp.codec.gen.EPPCommand.findUnsupportedExtNamespaces(List<String>), and com.verisign.epp.codec.gen.EPPResponse.findUnsupportedExtNamespaces(List<String>) to identify unsupported EPP extensions, and the associated unit tests in com.verisign.epp.util.EPPCodecTst.testFindDUnsupportedExtensions().
38. Revised com.verisign.epp.codec.domain.EPPDomainCreateCmd to use generics for the Vector lists as a prototype for revising the EPP SDK to leverage generics while maintaining interface backward compatibility. Added has and add methods for each of the list properties (contacts, servers). Revised the servers list to work only with name server objects and added a new serverAttrs list and corresponding methods to use host attributes.
39. Revised com.verisign.epp.codec.domain.EPPDomainInfoResp to use generics for the Vector lists as a prototype for revising the EPP SDK to leverage generics while maintaining interface backward compatibility. Added has and add methods for each of the list properties (statuses, contacts, nses, and hosts). Revised the nses list to work only with name server objects and added a new nsAttrs list and corresponding methods to use host attributes.
40. Replaced draft-ietf-regext-epp-fees-20 with RFC 8748.
1.12.0.12 Unix Binary (TAR)
Unix Source (TAR)
Windows Binary (ZIP)
Windows Source (ZIP)
Programmer's Guide (PDF)
Change Log (TXT)
1. Replaced the use of Ant for builds to Gradle.
2. Removed all use of the "xsi:schemaLocation" XML attribute, the use of the "http://www.w3.org/2001/XMLSchema-instance" XML namespace, and the passing of the schemaLocation to the com.verisign.epp.codec.gen.EPPService class.
3. Created the com.verisign.epp.interfaces.EPPSession.initLoginAdapter() method and ensured that it is called in all of the com.verisign.epp.interfaces.EPPSession.init methods.
4. Updated com.verisign.epp.interfaces.EPPSessionTst to address a "missing type arguments for generic class Class<T>" warning.
5. Updated draft draft-ietf-regext-epp-fees and fee-1.0.xsd for draft-ietf-regext-epp-fees-19.
6. Updated the EPPPollQueueMgr.delete method to use the <poll> element instead of the "epp" prefixed <epp:poll> element in the value of the error response, since the "epp" namespace prefix is undefined.
7. Added support for draft-ietf-regext-login-security-04.
8. Fixed an issue with the logging of the received packets on the client-side by updating the com.verisign.epp.interfaces.EPPSession class.
9. Removed old versions of the Login Security Extension. which include v01, v02, and v03. Versions v04 and v1_0 are kept.
10. Updated the order that the factories and handlers are loaded in com.verisign.epp.serverstub.Server.initializeDispatcher(), where the extension factories, then the map factories, and finally the handlers are loaded. This addresses a corner case where the com.verisign.epp.serverstub.ContactHandler is loading the strict contact parser pool prior to the XML schemas linked to the factories are loaded.
11. Fixed the logic of replacing "contact-1.0-relaxed.xsd" with "contact-1.0.xsd" in com.verisign.epp.util.EPPStrictContactParser, where previously "contact-1.0-relaxed.xsd" was removed and "contact-1.0.xsd" was not added.
12. Updated draft draft-ietf-regext-epp-fees to draft-ietf-regext-epp-fees-18.
13. Updated EPPSession.getnewPassword() to EPPSession.getNewPassword().
14. Removed unused com.verisign.epp.transport.EPPEventHandler and com.verisign.epp.transport.EPPEventTstHandler.
15. Added masking of password and new password in com.verisign.epp.namestore.util.EPPSecureSendReceiveLogger for com.verisign.epp.codec.loginsec.v02.EPPLoginSec, com.verisign.epp.codec.loginsec.v03.EPPLoginSec, com.verisign.epp.codec.loginsec.v03.EPPLoginSec, or com.verisign.epp.codec.loginsec.v1_0.EPPLoginSec extensions to login command.
16. Fixed com.verisign.epp.codec.loginsec.v1_0.EPPLoginSecUserAgent and com.verisign.epp.codec.loginsec.v04.EPPLoginSecUserAgent getTech(String) : void method to setTech(String) : void.
17. Created sources.jar file named epp-verisign-${build.version}-sources.jar in the epp lib directory and added the DotName extensions (defreg, emailfwd, namewatch, and persreg) to it.
18. Added generation of the EPP SDK POM file when creating the epp-verisign-<version>.jar file.
19. Created the com.verisign.epp.util.EPPDisabledEntityResolver class and use it when the EPP.UseEntityResolver property is set to false to ensure no XML schemas are dynamically resolved.
20. Added support for draft-ietf-regext-login-security-03.
21. Added support for draft-gould-regext-login-security-policy-03.
22. Set the default value in epp.config for the property EPP.UseEntityResolver=false to disable the entity resolver.
23. Set the XML parser features that mitigate the XML eXternal Entity Injection (XXE) vulnerability in com.verisign.epp.util.EPPSchemaCachingParser.
24. Corrected items in the Verisign Bundle EPP SDK Programmer's Guide based on what was done for version 1.11.0.7.
25. Added the initialize(Properties), initialize(String, ClassLoader), and initialize() methods to com.verisign.epp.interfaces.EPPApplication to support different methods of initializing the EPP SDK.
26. Removed decode support for the preWhois and postWhois elements in the restore report command of draft-hollenbeck-epp-rgp-03.
27. Added com.verisign.epp.util.EPPUtil.findDuplicateExtNamespaces(List<EPPCodecComponent>), com.verisign.epp.codec.gen.EPPCommand.findDuplicateExtNamespaces(), and com.verisign.epp.codec.gen.EPPResponse.findDuplicateExtNamespaces() to identify duplicate EPP extensions, and the associated unit tests in com.verisign.epp.util.EPPCodecTst.testFindDuplicateExtensions().
28. Cleaned up the com.verisign.epp.codec.domain code, by not hard coding the XML namespace prefix on decode, cleaning up the imports, cleaning up the comments, and generally making it more consistent with the newer code.
29. Added support for removing the auth info via the <domain:null> element by adding a new ELM_NULL authorization type and the removePassword() method to com.verisign.epp.codec.gen.EPPAuthInfo.
30. Fixed a large set of javadoc errors and warnings.
1.11.0.7 Unix Binary (TAR)
Unix Source (TAR)
Windows Binary (ZIP)
Windows Source (ZIP)
Programmer's Guide (PDF)
Change Log (TXT)
1. Updated draft draft-ietf-regext-epp-fees to draft-ietf-regext-epp-fees-16.
2. Updated change poll extension to RFC 8590.
3. Updated organization mapping and organization extension to RFC 8543 and RFC 8544, respectively.
4. Updated from XercesJ 2.11.0 to 2.12.0.
5. Added support for draft-ietf-regext-login-security-01
6. Updated compilation to target Java 8 instead of Java 7.
7. Updated to compile and run with Java 11. Added jaxb-api-2.3.1.jar and fixed many warnings due to deprecated classes and methods.
8. Added support for draft-gould-casanova-regext-unhandled-namespaces-00.
9. Added support for draft-gould-regext-login-security-policy-03.
10. Added support for draft-gould-regext-launch-policy-01.
11. Added support for draft-gould-carney-regext-registry-04.
12. Added support for draft-ietf-regext-validate-04.
13. Removed whois and suggestion from the SDK.
14. Commented out inclusion of the passphrase attributes (identityPassPhrase, identityKeyPassPhrase, and trustStorePassPhrase) in the EPPSSLConfig.toString() : String method to meet logging security best practice.
15. Added support for secure packet logging by creating the com.verisign.epp.util.EPPSendReceiveLogger interface along with the default com.verisign.epp.util.EPPRawSendReceiveLogger class and the com.verisign.epp.namestore.util.EPPSecureSendReceiveLogger class. The default is to use the EPPRawSendReceiveLogger with the option of overriding the default using the EPP.SendReceiveLogger epp.config property. Set the property to com.verisign.epp.namestore.util.EPPSecureSendReceiveLogger to get the password and auth info attributes logged with the "MASKED" value.
16. Fixed a bug in com.verisign.epp.codec.emailFwd.EPPEmailFwdCheckResult that set the check reason to the email forwarding name on decode. Updated the EPPEmailFwdCheckResult.equals methods to ensure that all attributes are checked. Made related cleanup changes to com.verisign.epp.codec.defReg.EPPDefRegCheckResult.
17. Added an additional check in com.verisign.epp.util.EPPSchemaCachingEntityResolver to ensure that XML schemas in the classpath are the only XML schemas that can be dynamically loaded.
18. Deprecated com.verisign.epp.namestore.interfaces.NSSubProduct. Removed BZ and revised COM, NET, ORG, and NAME to use the a-label TLD in com.verisign.epp.namestore.interfaces.NSSubProduct.
19. Changed to use TLSv1.2 as the default EPP.SSLProtocol setting across each of the epp.config files.
20. Added support for draft-ietf-regext-epp-fees-13 that adds the urn:ietf:params:xml:ns:epp:fee-1.0 XML namespace with its associated fee-1.0.xsd XML schema, the com.verisign.epp.codec.fee.v1_0 package, and related classes.
21. Added the com.verisign.epp.interfaces.EPPLoginAdapter class, the optional "EPP.LoginAdapter" epp.config property, and added invoking the set LoginAdapter within com.verisign.epp.interfaces.EPPSession to support adding an EPP login extension.
22. Added hasService(String) : boolean and hasExtensionService(String) : boolean to com.verisign.epp.codec.gen.EPPServiceMenu and com.verisign.epp.codec.gen.EPPGreeting to be able to easily identify whether the server supports a specific object or extension service.
23. Added EPP.UseUserAgent (EPPEnv.isUseUserAgent() : boolean) and EPP.SDKVersion (EPPEnv.getSDKVersion() : boolean) epp.config properties to support providing the user agent information in the login security extension.
24. Added support for the Login Security Extension.
25. Added the getNamespace() : String method to the com.verisign.epp.codec.gen.EPPCodecComponent interface and all of the implemented classes to make all components self-describing for the XML namespace.
26. Added the com.verisign.epp.codec.gen.EPPPollMessageFilter utility class to filter EPP poll message responses based on the login services (object and command / response) supported by the client.
27. Modified the com.verisign.epp.serverstub.GenHandler.doPoll(EPPEvent, Object) method to call com.verisign.epp.codec.gen.EPPPollMessageFilter in no-op and standard mode to demonstrate filtering the poll messages based on the client login services.
28. Added the getNamespace() : String method to some of the responses (EPPRgpPollResponse, EPPRelatedDomainExtDeleteResp, EPPBalanceInfoResp, EPPLowBalancePollResponse, EPPNameVerificationPendActionMsg) to ensure that they return the correct XML namespace.
29. Removed old fee extension versions including v06, v07, and v08.
30. Replaced references of reseller and resellerext to org and orgext.
31. Created the com.verisign.epp.codec.EPPPollMessageFilter interface that is implemented by the com.verisign.epp.codec.EPPXmlMsgPollMessageFilter, com.verisign.epp.codec.EPPExtValuePollMessageFilter, and com.verisign.epp.codec.EPPFullExtValuePollMessageFilter classes. The optional EPP.PollMessageFilter property is defined to set the desired filter for use within com.verisign.epp.serverstub.GenHandler.doPoll(EPPEvent, Object) when processing the poll messages.
32. Added support for draft-ietf-regext-org-10 by adding com.verisign.epp.codec.org.EPPOrgPendActionMsg, com.verisign.epp.serverstub.OrgPollHandler, and revising com.verisign.epp.serverstub.OrgHandler to handle a pending create and insert a pending action poll message based on a revised com.verisign.epp.interfaces.EPPOrgTst.
33. Replaced the expired test SMDs, SMD CRL, and revoked SMD list based on a posting by ICANN.
34. Fixed some of the XML namespace prefix and URI handling from within com.verisign.epp.codec.gen.EPPValue to support the different poll message filters.
35. Renamed com.verisign.epp.codec.gen.EPPPollMessageFilter to com.verisign.epp.codec.gen.EPPXmlMsgPollMessageFilter, added com.verisign.epp.codec.gen.EPPExtValuePollMessageFilter, and added com.verisign.epp.codec.gen.EPPFullExtValuePollMessageFilter to support three different approaches to filtering poll message data that is unsupported by the client based on the client's login services. The com.verisign.epp.serverstub.GenHandler.doPoll(EPPEvent, Object) is pre-defined to filter via EPPFullExtValuePollMessageFilter, but the filtering can be replaced to use one of the other filters.
36. Removed com.verisign.epp.util.TestErrorHandler and replaced it's used with com.verisign.epp.util.EPPXMLErrorHandler in the test classes.
37. Added the maskString(String) : String method to the EPPSendReceiverLogger class and it's derived classes for use in the EPPXMLErrorHandler class for masking sensitive XML parser errors like the 'pwType'.
1.10.0.3 Unix Binary (TAR)
Unix Source (TAR)
Windows Binary (ZIP)
Windows Source (ZIP)
Programmer's Guide (PDF)
Change Log (TXT)
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.9.0.1 Unix Binary (TAR)
Unix Source (TAR)
Windows Binary (ZIP)
Windows Source (ZIP)
Programmer's Guide (PDF)
Change Log (TXT)
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.8.0.4 Unix Binary (TAR)
Unix Source (TAR)
Windows Binary (ZIP)
Windows Source (ZIP)
Programmer's Guide (PDF)
Change Log (TXT)
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.6.0.2 Unix Binary (TAR)
Unix Source (TAR)
Windows Binary (ZIP)
Windows Source (ZIP)
Programmer's Guide (PDF)
Change Log (TXT)
1. Added the Verification Code Extension (verificationcode), that complies with draft-gould-eppext-verificationcode-02.
2. Added the China Name Verification Mapping (vsp), that complies with draft-xie-eppext-nv-mapping-01.
1.5.0.0 Unix Binary (TAR)
Unix Source (TAR)
Windows Binary (ZIP)
Windows Source (ZIP)
Programmer's Guide (PDF)
Change Log (TXT)
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.4.0.0 Unix Binary (TAR)
Unix Source (TAR)
Windows Binary (ZIP)
Windows Source (ZIP)
Programmer's Guide (PDF)
Change Log (TXT)
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.3.0.0 Unix Binary (TAR)
Unix Source (TAR)
Windows Binary (ZIP)
Windows Source (ZIP)
Programmer's Guide (PDF)
Change Log (TXT)
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.1.0.4 Unix Binary (TAR)
Unix Source (TAR)
Windows Binary (ZIP)
Windows Source (ZIP)
Programmer's Guide (PDF)
Change Log (TXT)
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.0.0.5 Unix Binary (TAR)
Unix Source (TAR)
Windows Binary (ZIP)
Windows Source (ZIP)
Programmer's Guide (PDF)
Change Log (TXT)
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.

EPP Tool

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 Operational Testing & Evaluation (OT&E) environment. The EPP Tool supports the COMNET and CTLD registry platforms.