1 package civitas.crypto.msg;
2
3 import java.nio.charset.Charset;
4 import java.nio.charset.StandardCharsets;
5
6 import org.springframework.beans.factory.annotation.Autowired;
7 import org.springframework.stereotype.Controller;
8
9 import civitas.crypto.CryptoException;
10 import civitas.crypto.parameters.ElGamalParameters;
11 import civitas.crypto.parameters.encoder.SchnorrPrimeEncode;
12 import civitas.util.CivitasBigInteger;
13 import civitas.util.CivitasBigIntegerFactory;
14
15 @Controller
16 public class EncodeMessage {
17 protected static final Charset CHARSET = StandardCharsets.UTF_8;
18
19 @Autowired
20 SchnorrPrimeEncode schnorrPrimeEncoder;
21
22 public CivitasBigInteger apply(final CivitasBigInteger plaintext, final ElGamalParameters params)
23 throws CryptoException {
24 return schnorrPrimeEncoder.apply(plaintext, params);
25 }
26
27 public CivitasBigInteger apply(final int i, final ElGamalParameters params) throws CryptoException {
28 return apply(CivitasBigIntegerFactory.obtain(i), params);
29 }
30
31 public CivitasBigInteger apply(final String s, final ElGamalParameters params) throws CryptoException {
32 try {
33 return apply(CivitasBigIntegerFactory.obtain(s.getBytes(CHARSET)), params);
34 } catch (Exception e) {
35 throw new CryptoException("I thought it is impossible");
36 }
37 }
38 }