Signature.java

  1. package com.syntifi.casper.sdk.model.key;

  2. import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
  3. import com.syntifi.casper.sdk.jackson.deserializer.SignatureDeserializer;
  4. import com.syntifi.crypto.key.AbstractPrivateKey;
  5. import com.syntifi.crypto.key.Secp256k1PrivateKey;
  6. import lombok.Builder;
  7. import lombok.NoArgsConstructor;

  8. import java.security.GeneralSecurityException;

  9. /**
  10.  * Hex-encoded cryptographic public key, including the algorithm tag prefix.
  11.  *
  12.  * @author Alexandre Carvalho
  13.  * @author Andre Bertolace
  14.  * @since 0.0.1
  15.  */
  16. @JsonDeserialize(using = SignatureDeserializer.class)
  17. @NoArgsConstructor
  18. @Builder
  19. public class Signature extends AbstractSerializedKeyTaggedHex<AlgorithmTag> {

  20.     public static Signature sign(AbstractPrivateKey key, byte[] msg) throws GeneralSecurityException {
  21.         byte[] signatureBytes = key.sign(msg);
  22.         Signature signature = new Signature();
  23.         signature.setKey(signatureBytes);
  24.         signature.setTag((key instanceof Secp256k1PrivateKey)
  25.                 ? AlgorithmTag.SECP256K1
  26.                 : AlgorithmTag.ED25519);
  27.         return signature;
  28.     }
  29. }