Пример #1
0
 /**
  * Do we know about the following key?
  *
  * @since 0.7.12
  */
 public boolean haveKey(String key) {
   if (key.length() != KEYSIZE_B64_BYTES) return false;
   SigningPublicKey signingPublicKey = new SigningPublicKey();
   try {
     signingPublicKey.fromBase64(key);
   } catch (DataFormatException dfe) {
     return false;
   }
   return _trustedKeys.containsKey(signingPublicKey);
 }
Пример #2
0
 /**
  * Duplicate keys or names rejected, except that duplicate empty names are allowed
  *
  * @param key 172 character base64 string
  * @param name non-null but "" ok
  * @since 0.7.12
  * @return true if successful
  */
 public boolean addKey(String key, String name) {
   if (_log.shouldLog(Log.DEBUG)) _log.debug("Adding " + name + ": " + key);
   SigningPublicKey signingPublicKey = new SigningPublicKey();
   try {
     // fromBase64() will throw a DFE if length is not right
     signingPublicKey.fromBase64(key);
   } catch (DataFormatException dfe) {
     _log.error("Invalid signing key for " + name + " : " + key, dfe);
     return false;
   }
   String oldName = _trustedKeys.get(signingPublicKey);
   // already there?
   if (name.equals(oldName)) return true;
   if (oldName != null && !oldName.equals("")) {
     _log.error("Key for " + name + " already stored for different name " + oldName + " : " + key);
     return false;
   }
   if ((!name.equals("")) && _trustedKeys.containsValue(name)) {
     _log.error("Key mismatch for " + name + ", spoof attempt? : " + key);
     return false;
   }
   _trustedKeys.put(signingPublicKey, name);
   return true;
 }