{"id":17949,"date":"2022-07-17T17:25:00","date_gmt":"2022-07-17T15:25:00","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=17949"},"modified":"2022-07-15T16:36:53","modified_gmt":"2022-07-15T14:36:53","slug":"documentum-encrypt-bof-passwords-with-a-minimal-jar-file","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/documentum-encrypt-bof-passwords-with-a-minimal-jar-file\/","title":{"rendered":"Documentum &#8211; Encrypt BOF passwords with a minimal jar file"},"content":{"rendered":"\n<p>Nowadays, with DevOps and containers approaches, you will often see components or software that try to go on a diet, to reduce the size needed to deploy them and therefore the images\/containers associated to it. I was recently asked to do something similar on a very specific feature that the Documentum DFC jar files provide: extract and minimize the jar file(s) needed for the encryption of a BOF password. In this blog, I will therefore go through the steps I took to achieve this.<\/p>\n\n\n\n<p>As you might know, Documentum DFC jar files provide a lot of capabilities, including encryption and decryption of passwords, as long as you know which class needs to be called for that. As mentioned, I was recently asked to strip down the needed jar files to only allow encryption of BOF passwords and nothing more than what is strictly necessary for it. Since the encryption and decryption are using two different classes, it also means that this new jar file will not be able to decrypt passwords, only encrypt them. Of course, it might technically be possible to decompile Documentum java classes and create your custom class using the (decompiled) source code from OpenText but let me remind you that it&#8217;s a proprietary software so that&#8217;s not something I will risk myself to do\u2026<\/p>\n\n\n\n<p>I worked on a Documentum 20.2 environment, but I assume the outcome would be very similar on other versions. The approach I used is basically a die and retry one: I know which class is being used to encrypt BOF passwords (&#8220;<em>com.documentum.fc.tools.RegistryPasswordUtils<\/em>&#8220;) and I know this is inside the dfc.jar file. Therefore, I can start from there and try to only use this class file to encrypt a password. This will most likely fail a few times, complaining about &#8220;<em>NoClassDefFoundError<\/em>&#8220;, which means that there are dependencies that are required to include into our custom jar file to be able to encrypt passwords. Then simply repeat this process until you are successfully able to get an encrypted password (that you can decrypt using the default dfc.jar and verify that it&#8217;s indeed a correctly encrypted password). These dependencies might not be necessarily needed for the encryption itself, but as mentioned, since we don\u2019t want to decompile the OpenText class files, we have no other choice than to just include any and all classes that have direct or indirect references\/methods being called, starting from the central point (<em>RegistryPasswordUtils.class<\/em>).<\/p>\n\n\n\n<p>In short, I started doing something like the following (I&#8217;m using a sub-folder for the encryption classpath to make sure it&#8217;s not using the local folder jar files):<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [10,11,33,38,39,40]; title: ; notranslate\" title=\"\">\n&#x5B;tomcat@d2-0 enc]$ workspace=&quot;.\/workspace&quot;\n&#x5B;tomcat@d2-0 enc]$ classpath=&quot;${workspace}\/*&quot;\n&#x5B;tomcat@d2-0 enc]$ mkdir ${workspace}\n&#x5B;tomcat@d2-0 enc]$\n&#x5B;tomcat@d2-0 enc]$ ls -l\ntotal 15548\n-rw-r----- 1 tomcat tomcat 15913953 Jul 17 13:45 dfc.jar\ndrwxr-x--- 2 tomcat tomcat     4096 Jul 17 13:46 workspace\n&#x5B;tomcat@d2-0 enc]$\n&#x5B;tomcat@d2-0 enc]$ jar -tvf dfc.jar | grep &quot;com\/documentum\/fc\/tools\/RegistryPasswordUtils&quot;\n  7646 Tue Mar 08 19:53:12 UTC 2022 com\/documentum\/fc\/tools\/RegistryPasswordUtils.class\n&#x5B;tomcat@d2-0 enc]$\n&#x5B;tomcat@d2-0 enc]$ jar -xf dfc.jar com\/documentum\/fc\/tools\/RegistryPasswordUtils.class\n&#x5B;tomcat@d2-0 enc]$\n&#x5B;tomcat@d2-0 enc]$ ls -l\ntotal 15552\ndrwxr-x--- 3 tomcat tomcat     4096 Jul 17 13:47 com\n-rw-r----- 1 tomcat tomcat 15913953 Jul 17 13:45 dfc.jar\ndrwxr-x--- 2 tomcat tomcat     4096 Jul 17 13:46 workspace\n&#x5B;tomcat@d2-0 enc]$\n&#x5B;tomcat@d2-0 enc]$ tree com\ncom\n\u2514\u2500\u2500 documentum\n \u00a0\u00a0 \u2514\u2500\u2500 fc\n \u00a0\u00a0  \u00a0\u00a0 \u2514\u2500\u2500 tools\n \u00a0\u00a0  \u00a0\u00a0  \u00a0\u00a0 \u2514\u2500\u2500 RegistryPasswordUtils.class\n\n3 directories, 1 file\n&#x5B;tomcat@d2-0 enc]$\n&#x5B;tomcat@d2-0 enc]$ echo ${classpath}\n.\/workspace\/*\n&#x5B;tomcat@d2-0 enc]$\n&#x5B;tomcat@d2-0 enc]$ jar -cf ${workspace}\/encrypt.jar com\n&#x5B;tomcat@d2-0 enc]$\n&#x5B;tomcat@d2-0 enc]$ echo ${classpath}\n.\/workspace\/encrypt.jar\n&#x5B;tomcat@d2-0 enc]$\n&#x5B;tomcat@d2-0 enc]$ java -classpath &quot;${classpath}&quot; com.documentum.fc.tools.RegistryPasswordUtils &quot;T3stP4ssw0rd&quot;\nError: Unable to initialize main class com.documentum.fc.tools.RegistryPasswordUtils\nCaused by: java.lang.NoClassDefFoundError: com\/documentum\/fc\/common\/DfException\n&#x5B;tomcat@d2-0 enc]$\n<\/pre><\/div>\n\n\n<p>As you can see above, the &#8220;<em>NoClassDefFoundError<\/em>&#8221; is for another class (<em>DfException.class<\/em>), so then I simply continued from there on, finding this class, adding it into the &#8220;encrypt.jar&#8221; file and trying again:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [2,10,15,23]; title: ; notranslate\" title=\"\">\n&#x5B;tomcat@d2-0 enc]$ jar -tvf dfc.jar | grep &quot;com\/documentum\/fc\/common\/DfException&quot;\n 19265 Tue Mar 08 19:53:08 UTC 2022 com\/documentum\/fc\/common\/DfException.class\n&#x5B;tomcat@d2-0 enc]$\n&#x5B;tomcat@d2-0 enc]$ jar -xf dfc.jar com\/documentum\/fc\/common\/DfException.class\n&#x5B;tomcat@d2-0 enc]$\n&#x5B;tomcat@d2-0 enc]$ jar -cf ${workspace}\/encrypt.jar com\n&#x5B;tomcat@d2-0 enc]$\n&#x5B;tomcat@d2-0 enc]$ java -classpath &quot;${classpath}&quot; com.documentum.fc.tools.RegistryPasswordUtils &quot;T3stP4ssw0rd&quot;\nError: Unable to initialize main class com.documentum.fc.tools.RegistryPasswordUtils\nCaused by: java.lang.NoClassDefFoundError: com\/documentum\/fc\/common\/IDfException\n&#x5B;tomcat@d2-0 enc]$\n&#x5B;tomcat@d2-0 enc]$\n&#x5B;tomcat@d2-0 enc]$\n&#x5B;tomcat@d2-0 enc]$ jar -tvf dfc.jar | grep &quot;com\/documentum\/fc\/common\/IDfException&quot;\n  8453 Tue Mar 08 19:53:16 UTC 2022 com\/documentum\/fc\/common\/IDfException.class\n&#x5B;tomcat@d2-0 enc]$\n&#x5B;tomcat@d2-0 enc]$ jar -xf dfc.jar com\/documentum\/fc\/common\/IDfException.class\n&#x5B;tomcat@d2-0 enc]$\n&#x5B;tomcat@d2-0 enc]$ jar -cf ${workspace}\/encrypt.jar com\n&#x5B;tomcat@d2-0 enc]$\n&#x5B;tomcat@d2-0 enc]$ java -classpath &quot;${classpath}&quot; com.documentum.fc.tools.RegistryPasswordUtils &quot;T3stP4ssw0rd&quot;\nError: Unable to initialize main class com.documentum.fc.tools.RegistryPasswordUtils\nCaused by: java.lang.NoClassDefFoundError: org\/aspectj\/lang\/Signature\n&#x5B;tomcat@d2-0 enc]$\n<\/pre><\/div>\n\n\n<p>I guess you got the gist of it. As you can see, this last error is caused by a class (<em>Signature.class<\/em>) that doesn&#8217;t seem to belong to a Documentum package but instead to the &#8220;<em>org.aspectj<\/em>&#8221; one. There is actually a second jar file that is required to continue and that is the aspectjrt.jar. A big part of the classes that we will need to include to encrypt Documentum passwords (again, because of these dependencies required since we don&#8217;t want to touch the OpenText class files) are coming from this second jar.<\/p>\n\n\n\n<p>I went through to the end of it, and I got a list of classes required for the dfc.jar and the aspectjrt.jar (and their sub-classes, that&#8217;s why there are wildcards &#8220;*&#8221; below). I cleaned up everything and did it again from scratch to make sure I didn&#8217;t have any mistake in the steps:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [14,16,19,109,110,111,119,121,122]; title: ; notranslate\" title=\"\">\n&#x5B;tomcat@d2-0 enc]$ workspace=&quot;.\/workspace&quot;\n&#x5B;tomcat@d2-0 enc]$ classpath=&quot;${workspace}\/*&quot;\n&#x5B;tomcat@d2-0 enc]$ mkdir ${workspace}\n&#x5B;tomcat@d2-0 enc]$\n&#x5B;tomcat@d2-0 enc]$ ls -l\ntotal 15664\n-rw-r----- 1 tomcat tomcat   118762 Jul 17 14:07 aspectjrt.jar\n-rw-r----- 1 tomcat tomcat 15913953 Jul 17 13:45 dfc.jar\ndrwxr-x--- 2 tomcat tomcat     4096 Jul 17 14:08 workspace\n&#x5B;tomcat@d2-0 enc]$\n&#x5B;tomcat@d2-0 enc]$ jar -xf dfc.jar com\/\n&#x5B;tomcat@d2-0 enc]$ jar -xf aspectjrt.jar org\/\n&#x5B;tomcat@d2-0 enc]$\n&#x5B;tomcat@d2-0 enc]$ du -sh *\n116K    aspectjrt.jar\n56M     com\n16M     dfc.jar\n4.0K    workspace\n660K    org\n&#x5B;tomcat@d2-0 enc]$\n&#x5B;tomcat@d2-0 enc]$ echo &#039;com\/documentum\/com\/IDfClientX.class\ncom\/documentum\/fc\/client\/DfServiceInstantiationException.class\ncom\/documentum\/fc\/client\/DfServiceException.class\ncom\/documentum\/fc\/client\/DfTypedObject*.class\ncom\/documentum\/fc\/client\/IDfSession*.class\ncom\/documentum\/fc\/client\/IDfTypedObject.class\ncom\/documentum\/fc\/client\/IDfTypedObjectInternal.class\ncom\/documentum\/fc\/client\/IDfGlobalModuleRegistry.class\ncom\/documentum\/fc\/client\/IDfModuleRegistry.class\ncom\/documentum\/fc\/client\/impl\/bof\/classmgmt\/IClassLoader.class\ncom\/documentum\/fc\/client\/impl\/bof\/classmgmt\/IModuleManager.class\ncom\/documentum\/fc\/client\/impl\/bof\/classmgmt\/ModuleManager*.class\ncom\/documentum\/fc\/client\/impl\/bof\/classmgmt\/URLClassLoaderEx.class\ncom\/documentum\/fc\/client\/impl\/bof\/registry\/IModuleMetadata.class\ncom\/documentum\/fc\/client\/impl\/ITypedObject.class\ncom\/documentum\/fc\/client\/internal\/IShutdownListener.class\ncom\/documentum\/fc\/client\/internal\/ITypedObjectInternal.class\ncom\/documentum\/fc\/common\/DfException.class\ncom\/documentum\/fc\/common\/DfObject.class\ncom\/documentum\/fc\/common\/DfPreferences*.class\ncom\/documentum\/fc\/common\/DfRuntimeException.class\ncom\/documentum\/fc\/common\/IDfLoginInfo.class\ncom\/documentum\/fc\/common\/IDfException.class\ncom\/documentum\/fc\/common\/impl\/preferences\/IPreferencesObserver.class\ncom\/documentum\/fc\/common\/impl\/preferences\/TypedPreferences*.class\ncom\/documentum\/fc\/impl\/util\/PBEUtils.class\ncom\/documentum\/fc\/tools\/RegistryPasswordUtils.class\ncom\/documentum\/fc\/tracing\/impl\/aspects\/BaseTracingAspect.class\ncom\/documentum\/fc\/tracing\/impl\/Tracing*.class\ncom\/documentum\/fc\/tracing\/IUserIdentifyingObject.class\ncom\/documentum\/operations\/common\/DfBase64Encoder.class\ncom\/documentum\/operations\/common\/DfBase64FormatException.class&#039; &gt; list_dfc.txt\n&#x5B;tomcat@d2-0 enc]$\n&#x5B;tomcat@d2-0 enc]$ while read line; do\n  for file in $(ls ${line}); do\n    dest_folder=&quot;${workspace}\/$(dirname ${file})&quot;\n    mkdir -p &quot;${dest_folder}&quot;\n    cp &quot;${file}&quot; &quot;${dest_folder}&quot;\n  done\ndone &lt; &lt;(cat list_dfc.txt)\n&#x5B;tomcat@d2-0 enc]$\n&#x5B;tomcat@d2-0 enc]$ echo &#039;org\/aspectj\/lang\/JoinPoint*\norg\/aspectj\/lang\/reflect\/AdviceSignature.class\norg\/aspectj\/lang\/reflect\/CatchClauseSignature.class\norg\/aspectj\/lang\/reflect\/CodeSignature.class\norg\/aspectj\/lang\/reflect\/ConstructorSignature.class\norg\/aspectj\/lang\/reflect\/FieldSignature.class\norg\/aspectj\/lang\/reflect\/InitializerSignature.class\norg\/aspectj\/lang\/reflect\/LockSignature.class\norg\/aspectj\/lang\/reflect\/MemberSignature.class\norg\/aspectj\/lang\/reflect\/MethodSignature.class\norg\/aspectj\/lang\/reflect\/SourceLocation.class\norg\/aspectj\/lang\/reflect\/UnlockSignature.class\norg\/aspectj\/lang\/Signature.class\norg\/aspectj\/runtime\/reflect\/AdviceSignatureImpl.class\norg\/aspectj\/runtime\/reflect\/CatchClauseSignatureImpl.class\norg\/aspectj\/runtime\/reflect\/CodeSignatureImpl.class\norg\/aspectj\/runtime\/reflect\/ConstructorSignatureImpl.class\norg\/aspectj\/runtime\/reflect\/Factory.class\norg\/aspectj\/runtime\/reflect\/FieldSignatureImpl.class\norg\/aspectj\/runtime\/reflect\/InitializerSignatureImpl.class\norg\/aspectj\/runtime\/reflect\/JoinPointImpl*\norg\/aspectj\/runtime\/reflect\/LockSignatureImpl.class\norg\/aspectj\/runtime\/reflect\/MemberSignatureImpl.class\norg\/aspectj\/runtime\/reflect\/MethodSignatureImpl.class\norg\/aspectj\/runtime\/reflect\/SignatureImpl*.class\norg\/aspectj\/runtime\/reflect\/SourceLocationImpl.class\norg\/aspectj\/runtime\/reflect\/UnlockSignatureImpl.class&#039; &gt; list_aspectjrt.txt\n&#x5B;tomcat@d2-0 enc]$\n&#x5B;tomcat@d2-0 enc]$ while read line; do\n  for file in $(ls ${line}); do\n    dest_folder=&quot;${workspace}\/$(dirname ${file})&quot;\n    mkdir -p &quot;${dest_folder}&quot;\n    cp &quot;${file}&quot; &quot;${dest_folder}&quot;\n  done\ndone &lt; &lt;(cat list_aspectjrt.txt)\n&#x5B;tomcat@d2-0 enc]$\n&#x5B;tomcat@d2-0 enc]$ du -sh *\n116K    aspectjrt.jar\n56M     com\n16M     dfc.jar\n1.4M    workspace\n4.0K    list_aspectjrt.txt\n4.0K    list_dfc.txt\n660K    org\n&#x5B;tomcat@d2-0 enc]$\n&#x5B;tomcat@d2-0 enc]$ cd ${workspace}\/\n&#x5B;tomcat@d2-0 workspace]$\n&#x5B;tomcat@d2-0 workspace]$ du -sh *\n1.2M    com\n176K    org\n&#x5B;tomcat@d2-0 workspace]$\n&#x5B;tomcat@d2-0 workspace]$ jar -cf encrypt.jar com org\n&#x5B;tomcat@d2-0 workspace]$\n&#x5B;tomcat@d2-0 workspace]$ rm -rf com\/ org\/\n&#x5B;tomcat@d2-0 workspace]$\n&#x5B;tomcat@d2-0 workspace]$ ls -l\ntotal 324\n-rw-r----- 1 tomcat tomcat 328470 Jul 17 14:11 encrypt.jar\n&#x5B;tomcat@d2-0 workspace]$\n&#x5B;tomcat@d2-0 workspace]$ java -classpath &quot;.\/encrypt.jar&quot; com.documentum.fc.tools.RegistryPasswordUtils &quot;T3stP4ssw0rd&quot;\nAAAAEGSo3bu4EisUf3nIQkN0geKBTCWJePigsKNqozw+XVIz\n&#x5B;tomcat@d2-0 workspace]$\n<\/pre><\/div>\n\n\n<p>And voila, we have an encrypted password. To validate that it&#8217;s properly done, you can try to decrypt it. I won&#8217;t put in this blog the command to be used to decrypt passwords because I don&#8217;t really think that&#8217;s something that should be public, but if you really want to know, all I can say is that if you are looking on official resources provided by Documentum, you will probably find what you are looking for\u2026 In any cases, the decryption is working properly using the default dfc.jar (it doesn&#8217;t need aspectjrt.jar to decrypt) but it&#8217;s of course not working for our newly created encrypt.jar:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,2,3,7,8]; title: ; notranslate\" title=\"\">\n&#x5B;tomcat@d2-0 workspace]$ java -classpath &quot;.\/encrypt.jar&quot; ***something*** AAAAEGSo3bu4EisUf3nIQkN0geKBTCWJePigsKNqozw+XVIz\nError: Could not find or load main class ***something***\nCaused by: java.lang.ClassNotFoundException: ***something***\n&#x5B;tomcat@d2-0 workspace]$\n&#x5B;tomcat@d2-0 workspace]$ cd ..\n&#x5B;tomcat@d2-0 enc]$\n&#x5B;tomcat@d2-0 enc]$ java -classpath &quot;.\/dfc.jar&quot; ***something*** AAAAEGSo3bu4EisUf3nIQkN0geKBTCWJePigsKNqozw+XVIz\nThe decrypted password is: T3stP4ssw0rd\n&#x5B;tomcat@d2-0 enc]$\n<\/pre><\/div>\n\n\n<p>As you can see, it&#8217;s the same password that we had initially, so the encryption works properly. Now the main purpose of this activity was to decrease the size of the jar file needed to encrypt password, so what&#8217;s the status there? The default &#8220;<em>com<\/em>&#8221; (from dfc.jar) and &#8220;<em>org<\/em>&#8221; (from aspectjrt.jar) folders are roughly 56Mb, while the minimal ones that we are using to create the encrypt.jar file are only 1.2Mb! To be able to encrypt passwords, you would need normally both the dfc.jar as well as the aspectjrt.jar, for a total size of 16032715 bytes (~15.3Mb). On the other hand, the encrypt.jar file that we just created is only 328475 bytes (~0.31Mb, i.e., <span style=\"text-decoration: underline\">48.8 times smaller<\/span>) so that&#8217;s good. It would obviously be possible to add the decrypt capability to our encrypt.jar but the goal here was to only be able to encrypt passwords, so that you can use this jar file anywhere to quickly encrypt a password to use right away.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nowadays, with DevOps and containers approaches, you will often see components or software that try to go on a diet, to reduce the size needed to deploy them and therefore the images\/containers associated to it. I was recently asked to do something similar on a very specific feature that the Documentum DFC jar files provide: [&hellip;]<\/p>\n","protected":false},"author":20,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[197,525],"tags":[1136,2609,447],"type_dbi":[],"class_list":["post-17949","post","type-post","status-publish","format-standard","hentry","category-application-integration-middleware","category-enterprise-content-management","tag-dm_bof_registry","tag-documentum-2","tag-encryption"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Documentum - Encrypt BOF passwords with a minimal jar file - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/documentum-encrypt-bof-passwords-with-a-minimal-jar-file\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Documentum - Encrypt BOF passwords with a minimal jar file\" \/>\n<meta property=\"og:description\" content=\"Nowadays, with DevOps and containers approaches, you will often see components or software that try to go on a diet, to reduce the size needed to deploy them and therefore the images\/containers associated to it. I was recently asked to do something similar on a very specific feature that the Documentum DFC jar files provide: [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/documentum-encrypt-bof-passwords-with-a-minimal-jar-file\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2022-07-17T15:25:00+00:00\" \/>\n<meta name=\"author\" content=\"Morgan Patou\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@MorganPatou\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Morgan Patou\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/documentum-encrypt-bof-passwords-with-a-minimal-jar-file\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/documentum-encrypt-bof-passwords-with-a-minimal-jar-file\\\/\"},\"author\":{\"name\":\"Morgan Patou\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/c4d05b25843a9bc2ab20415dae6bd2d8\"},\"headline\":\"Documentum &#8211; Encrypt BOF passwords with a minimal jar file\",\"datePublished\":\"2022-07-17T15:25:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/documentum-encrypt-bof-passwords-with-a-minimal-jar-file\\\/\"},\"wordCount\":927,\"commentCount\":0,\"keywords\":[\"dm_bof_registry\",\"Documentum\",\"encryption\"],\"articleSection\":[\"Application integration &amp; Middleware\",\"Enterprise content management\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/documentum-encrypt-bof-passwords-with-a-minimal-jar-file\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/documentum-encrypt-bof-passwords-with-a-minimal-jar-file\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/documentum-encrypt-bof-passwords-with-a-minimal-jar-file\\\/\",\"name\":\"Documentum - Encrypt BOF passwords with a minimal jar file - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"datePublished\":\"2022-07-17T15:25:00+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/c4d05b25843a9bc2ab20415dae6bd2d8\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/documentum-encrypt-bof-passwords-with-a-minimal-jar-file\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/documentum-encrypt-bof-passwords-with-a-minimal-jar-file\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/documentum-encrypt-bof-passwords-with-a-minimal-jar-file\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Documentum &#8211; Encrypt BOF passwords with a minimal jar file\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/c4d05b25843a9bc2ab20415dae6bd2d8\",\"name\":\"Morgan Patou\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g\",\"caption\":\"Morgan Patou\"},\"description\":\"Morgan Patou has over 12 years of experience in Enterprise Content Management (ECM) systems, with a strong focus in recent years on platforms such as Alfresco, Documentum, and M-Files. He specializes in the architecture, setup, customization, and maintenance of ECM infrastructures in complex &amp; critical environments. Morgan is well-versed in both engineering and operations aspects, including high availability design, system integration, and lifecycle management. He also has a solid foundation in open-source and proprietary technologies - ranging from Apache, OpenLDAP or Kerberos to enterprise-grade systems like WebLogic. Morgan Patou holds an Engineering Degree in Computer Science from ENSISA (\u00c9cole Nationale Sup\u00e9rieure d'Ing\u00e9nieurs Sud Alsace) in Mulhouse, France. He is Alfresco Content Services Certified Administrator (ACSCA), Alfresco Content Services Certified Engineer (ACSCE) as well as OpenText Documentum Certified Administrator. His industry experience spans the Public Sector, IT Services, Financial Services\\\/Banking, and the Pharmaceutical industry.\",\"sameAs\":[\"https:\\\/\\\/blog.dbi-services.com\\\/author\\\/morgan-patou\\\/\",\"https:\\\/\\\/x.com\\\/MorganPatou\"],\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/author\\\/morgan-patou\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Documentum - Encrypt BOF passwords with a minimal jar file - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/documentum-encrypt-bof-passwords-with-a-minimal-jar-file\/","og_locale":"en_US","og_type":"article","og_title":"Documentum - Encrypt BOF passwords with a minimal jar file","og_description":"Nowadays, with DevOps and containers approaches, you will often see components or software that try to go on a diet, to reduce the size needed to deploy them and therefore the images\/containers associated to it. I was recently asked to do something similar on a very specific feature that the Documentum DFC jar files provide: [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/documentum-encrypt-bof-passwords-with-a-minimal-jar-file\/","og_site_name":"dbi Blog","article_published_time":"2022-07-17T15:25:00+00:00","author":"Morgan Patou","twitter_card":"summary_large_image","twitter_creator":"@MorganPatou","twitter_misc":{"Written by":"Morgan Patou","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/documentum-encrypt-bof-passwords-with-a-minimal-jar-file\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/documentum-encrypt-bof-passwords-with-a-minimal-jar-file\/"},"author":{"name":"Morgan Patou","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/c4d05b25843a9bc2ab20415dae6bd2d8"},"headline":"Documentum &#8211; Encrypt BOF passwords with a minimal jar file","datePublished":"2022-07-17T15:25:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/documentum-encrypt-bof-passwords-with-a-minimal-jar-file\/"},"wordCount":927,"commentCount":0,"keywords":["dm_bof_registry","Documentum","encryption"],"articleSection":["Application integration &amp; Middleware","Enterprise content management"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/documentum-encrypt-bof-passwords-with-a-minimal-jar-file\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/documentum-encrypt-bof-passwords-with-a-minimal-jar-file\/","url":"https:\/\/www.dbi-services.com\/blog\/documentum-encrypt-bof-passwords-with-a-minimal-jar-file\/","name":"Documentum - Encrypt BOF passwords with a minimal jar file - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2022-07-17T15:25:00+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/c4d05b25843a9bc2ab20415dae6bd2d8"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/documentum-encrypt-bof-passwords-with-a-minimal-jar-file\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/documentum-encrypt-bof-passwords-with-a-minimal-jar-file\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/documentum-encrypt-bof-passwords-with-a-minimal-jar-file\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Documentum &#8211; Encrypt BOF passwords with a minimal jar file"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/c4d05b25843a9bc2ab20415dae6bd2d8","name":"Morgan Patou","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g","caption":"Morgan Patou"},"description":"Morgan Patou has over 12 years of experience in Enterprise Content Management (ECM) systems, with a strong focus in recent years on platforms such as Alfresco, Documentum, and M-Files. He specializes in the architecture, setup, customization, and maintenance of ECM infrastructures in complex &amp; critical environments. Morgan is well-versed in both engineering and operations aspects, including high availability design, system integration, and lifecycle management. He also has a solid foundation in open-source and proprietary technologies - ranging from Apache, OpenLDAP or Kerberos to enterprise-grade systems like WebLogic. Morgan Patou holds an Engineering Degree in Computer Science from ENSISA (\u00c9cole Nationale Sup\u00e9rieure d'Ing\u00e9nieurs Sud Alsace) in Mulhouse, France. He is Alfresco Content Services Certified Administrator (ACSCA), Alfresco Content Services Certified Engineer (ACSCE) as well as OpenText Documentum Certified Administrator. His industry experience spans the Public Sector, IT Services, Financial Services\/Banking, and the Pharmaceutical industry.","sameAs":["https:\/\/blog.dbi-services.com\/author\/morgan-patou\/","https:\/\/x.com\/MorganPatou"],"url":"https:\/\/www.dbi-services.com\/blog\/author\/morgan-patou\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/17949","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/20"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=17949"}],"version-history":[{"count":2,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/17949\/revisions"}],"predecessor-version":[{"id":17955,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/17949\/revisions\/17955"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=17949"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=17949"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=17949"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=17949"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}