
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="author" content="">

    <title>Pubsub Keys / Apache Celix</title>

    
    <link rel="icon" href="/assets/img/favicon.ico">

    
    <link href="/assets/css/bootstrap.min.css" rel="stylesheet">

    
    <link href="/assets/css/style.css" rel="stylesheet">
    
    
<script>
  var _paq = window._paq = window._paq || [];
   
  _paq.push(['disableCookies']);
   
  _paq.push(['trackPageView']);
  _paq.push(['enableLinkTracking']);
  (function() {
    var u="https://analytics.apache.org/";
    _paq.push(['setTrackerUrl', u+'matomo.php']);
    _paq.push(['setSiteId', '9']);
    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
    g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
  })();
</script>


</head>
<body class="light-grey">

<a href="https://github.com/apache/celix" class="github-ribbon">
    <img src="/assets/img/forkme_right_red_aa0000.png" alt="Fork me on GitHub">
</a>


<nav class="navbar navbar-expand-lg navbar-dark bg-primary fixed-top">
    <div class="container">
        <a class="navbar-brand" href="/">
            <img src="/assets/img/celix-white.svg" height="40" class="d-inline-block align-top" alt="Celix Logo">
        </a>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>
        <div class="collapse navbar-collapse" id="navbarResponsive">
            <ul class="navbar-nav ml-auto">
                <li class="nav-item">
                    <a class="nav-link" href="/">Home</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="/download.cgi">Download</a>
                </li>
                <li class="nav-item dropdown active">
                    <a class="nav-link dropdown-toggle" href="#" id="ddDocs" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                        Docs
                    </a>
                    <div class="dropdown-menu" aria-labelledby="ddDocs">
                        <a class="dropdown-item" href="/docs/2.4.0/docs.html">2.4.0 (latest)</a>
                        <a class="dropdown-item" href="/docs/2.3.0/docs.html">2.3.0</a>
                        <a class="dropdown-item" href="/docs/2.2.1/docs.html">2.2.1</a>
                        <a class="dropdown-item" href="/docs/2.1.0/docs.html">2.1.0</a>
                    </div>
                </li>
                <li class="nav-item dropdown">
                    <a class="nav-link dropdown-toggle" href="#" id="ddContributing" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                        Contributing
                    </a>
                    <div class="dropdown-menu" aria-labelledby="ddContributing">
                        <a class="dropdown-item" href="/contributing/youatcelix.html">You at Celix</a>
                        <a class="dropdown-item" href="/contributing/submitting-patches.html">Submitting patches</a>
                        <a class="dropdown-item" href="/contributing/source-and-builds.html">Source code and builds</a>
                        <hr>
                        <a class="dropdown-item" href="/contributing/releasing.html">Releasing</a>
                        <a class="dropdown-item" href="/contributing/volunteers.html">Volunteers</a>
                        <a class="dropdown-item" href="https://whimsy.apache.org/board/minutes/Celix.html">Board Reports</a>
                    </div>
                </li>
                <li class="nav-item dropdown">
                    <a class="nav-link dropdown-toggle" href="#" id="ddSupport" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                        Support
                    </a>
                    <div class="dropdown-menu" aria-labelledby="ddSupport">
                        <a class="dropdown-item" href="/support/mailing-list.html">Mailing Lists</a>
                        <a class="dropdown-item" href="/support/issue-tracking.html">Issue Tracking</a>
                    </div>
                </li>
                <li class="nav-item dropdown">
                    <a class="nav-link dropdown-toggle" href="#" id="ddFoundation" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                        ASF
                    </a>
                    <div class="dropdown-menu" aria-labelledby="ddFoundation">
                        <a class="dropdown-item" href="https://www.apache.org/">ASF Home</a>
                        <a class="dropdown-item" href="https://www.apache.org/foundation/how-it-works.html">How it works</a>
                        <a class="dropdown-item" href="https://www.apache.org/licenses/">License</a>
                        <a class="dropdown-item" href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
                        <a class="dropdown-item" href="https://www.apache.org/foundation/thanks.html">Thanks</a>
                        <a class="dropdown-item" href="https://www.apache.org/security/">Security</a>
                        <a class="dropdown-item" href="https://www.apache.org/foundation/policies/conduct">Code of Conduct</a>
                    </div>
                </li>
            </ul>
        </div>
    </div>
</nav>


<div class="section">
    <div class="container">
        <div class="row py-4">
            <div class="col-sm-12 card">
                <div class="card-body pt-5">
                    
                    
                        
                        
                    

                    
                        
                        <a href="/docs/2.1.0/docs.html" title="back to documentation">&lt;&lt; back to documentation</a>
                    

                    
	<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at
   
    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<p>Store the AES key for encrypting and decrypting the encoded secret keys safe in a file!
Default file is <code>/etc/pubsub.keys</code> with the following format:</p>
<pre tabindex="0"><code>aes_key:{32 character AES key here}
aes_iv:{16 character AES iv here}
</code></pre><p>Use the $PROJECT_BUILD/pubsub/keygen/makecert for generating keypairs
Use the $PROJECT_BUILD/pubsub/keygen/ed_file for encrypting and decrypting private keys</p>
<p>Public keys need to be stored in the &lsquo;public&rsquo; folder having the following format:</p>
<ul>
<li>pub_{topic}.pub</li>
<li>sub_{topic}.pub</li>
</ul>
<p>Secret keys need to be stored in the &lsquo;private&rsquo; folder having the following format:</p>
<ul>
<li>pub_{topic}.key.enc</li>
<li>sub_{topic}.key.enc
These files need to be encrypted using the &rsquo;ed_file&rsquo; executable.</li>
</ul>


                </div>
            </div>
        </div>
    </div>
</div>


<footer class="py-3 bg-secondary">
    <div class="container">
        <div class="row">
            <div class="col-md-8 text-center">
                <p class="m-0 text-white">
                    Copyright &copy; 2025 The Apache Software Foundation, Licensed under
                    the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.
                    <br>
                    Apache Celix, Celix, Apache, the Apache feather logo and the Apache Celix logo are trademarks of The Apache Software Foundation.
                </p>
            </div>
            <div class="col-md-4 text-center">
                <a href="https://www.apache.org/events/current-event.html" target="_blank">
                    <img src="https://www.apache.org/events/current-event-234x60.png" title="Apache Event" width="234" height="60" border="0">
                </a>
            </div>
        </div>
    </div>
</footer>


<script src="/assets/js/jquery.min.js"></script>
<script src="/assets/js/bootstrap.bundle.min.js"></script>


</body>
</html>
