Tengo una biblioteca que almacena todos sus elementos de campo ECC en forma no comprimida, en un formato XML Base64 hinchado, y el almacenamiento se ha convertido en una preocupación. (Queremos admitir el código QR como un factor de forma, etc.)
En lugar de pedir a los autores de las bibliotecas criptográficas que admitan puntos comprimidos en ECC (no sé qué tan difícil sería esto), creo que es posible que un software software de pieza capture estos elementos en línea, comprímalos (con una bit de signo), y descomprímalos al deserializar
Mi objetivo es hacer que la biblioteca ni siquiera sepa que usé ECC comprimido para el almacenamiento temporal en tránsito.
¿Es este un enfoque viable? ¿Qué otras cosas debo considerar antes de hacer esto?
Para referencia, planeo usar este código en Bouncy Castle
public override byte[] GetEncoded(bool compressed)
{
if (this.IsInfinity)
{
return new byte[1];
}
ECPoint normed = Normalize();
byte[] X = normed.XCoord.GetEncoded();
if (compressed)
{
byte[] PO = new byte[X.Length + 1];
PO[0] = (byte)(normed.CompressionYTilde ? 0x03 : 0x02);
Array.Copy(X, 0, PO, 1, X.Length);
return PO;
}
byte[] Y = normed.YCoord.GetEncoded();
{
byte[] PO = new byte[X.Length + Y.Length + 1];
PO[0] = 0x04;
Array.Copy(X, 0, PO, 1, X.Length);
Array.Copy(Y, 0, PO, X.Length + 1, Y.Length);
return PO;
}
}