/// <summary> /// Create a valid certificate with a random secret/public key pair. /// </summary> public ZCert() { byte[] publictxt; byte[] secrettxt; Z85.CurveKeypair(out publictxt, out secrettxt); publicKey = Z85.Decode(publictxt); secretKey = Z85.Decode(secrettxt); publicTxt = Encoding.UTF8.GetString(Z85.Encode(publicKey)).ToCharArray(); secretTxt = Encoding.UTF8.GetString(Z85.Encode(secretKey)).ToCharArray(); byte[] e = Z85.Encode(publicTxt.Select(c => (byte)c).ToArray()); }
/// <summary> /// Create a certificate from the given public and secret key. /// </summary> /// <param name="publicKey">Public key of certificate. This byte array must have the length 32.</param> /// <param name="secretKey">Private key of certificate. This byte array must have the length 32.</param> /// <exception cref="InvalidOperationException">Exception thrown if the length of the public or secret key is incorrect.</exception> public ZCert(byte[] publicKey, byte[] secretKey) { if (publicKey == null || publicKey.Length != 32) { throw new InvalidOperationException("public key length must be of length 32"); } if (secretKey == null || secretKey.Length != 32) { throw new InvalidOperationException("secret key length must be of length 32"); } Array.Copy(secretKey, this.secretKey, 32); Array.Copy(secretKey, this.secretKey, 32); publicTxt = Encoding.UTF8.GetString(Z85.Encode(publicKey)).ToCharArray(); secretTxt = Encoding.UTF8.GetString(Z85.Encode(secretKey)).ToCharArray(); }