Ho una libreria che memorizza tutti i suoi elementi del campo ECC in formato non compresso, in un formato XML Base64 gonfiato, e lo storage è diventato un problema. (Vogliamo supportare il codice QR come fattore di forma, ecc.)
Piuttosto che chiedere agli autori delle librerie crittografiche di supportare i punti compressi in ECC (non so quanto sarebbe difficile questo) penso che sia possibile avere un proxy software pezzo per acquisire questi elementi in linea, comprimerli (con un segno di bit) e decomprimerli durante la deserializzazione
My goal is to make the library not even know that I used compressed ECC for temporary, in-transit storage.
È un approccio praticabile? Quali altre cose dovrei considerare prima di fare questo?
Per riferimento, ho intenzione di utilizzare questo codice in 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;
}
}