PrivateKeyAdapter.java

  1. /*
  2.  * Copyright (C) 2020-2024 by Savoir-faire Linux
  3.  *
  4.  * This program is free software; you can redistribute it and/or modify
  5.  * it under the terms of the GNU General Public License as published by
  6.  * the Free Software Foundation; either version 3 of the License, or
  7.  * (at your option) any later version.
  8.  *
  9.  * This program is distributed in the hope that it will be useful,
  10.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12.  * GNU General Public License for more details.
  13.  *
  14.  * You should have received a copy of the GNU General Public License
  15.  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
  16.  */
  17. package net.jami.jams.common.serialization.adapters;

  18. import com.google.gson.*;

  19. import net.jami.jams.common.utils.X509Utils;

  20. import java.lang.reflect.Type;
  21. import java.security.PrivateKey;

  22. public class PrivateKeyAdapter implements JsonSerializer<PrivateKey>, JsonDeserializer<PrivateKey> {
  23.     @Override
  24.     public PrivateKey deserialize(
  25.             JsonElement json, Type typeOfT, JsonDeserializationContext context)
  26.             throws JsonParseException {
  27.         return X509Utils.getKeyFromPEMString(json.getAsString());
  28.     }

  29.     @Override
  30.     public JsonElement serialize(PrivateKey src, Type typeOfSrc, JsonSerializationContext context) {
  31.         return new JsonPrimitive(X509Utils.getPEMStringFromPrivateKey(src));
  32.     }
  33. }