public static void Unpack(this Unpacker unpacker, bool isPrivateKey, out Key key) { var keyType = (KeyTypes)unpacker.UnpackByte(); unpacker.Position--; var keySize = Key.GetKeyBytes(keyType, isPrivateKey, true); unpacker.Unpack(out byte[] keyData, keySize); key = Key.Restore(new ArraySegment <byte>(keyData)); }
public static void Unpack(this Unpacker unpacker, out Hash hash) { var hashType = (HashTypes)unpacker.UnpackByte(); unpacker.Position--; var hashSize = Hash.GetHashBytes(hashType, true); unpacker.Unpack(out byte[] hashData, hashSize); hash = Hash.Restore(new ArraySegment <byte>(hashData)); }
public static void Unpack(this Unpacker unpacker, out Signature signature) { var keyType = (KeyTypes)unpacker.UnpackByte(); unpacker.Position--; var signatureSize = Signature.GetSignatureBytes(keyType, true); unpacker.Unpack(out byte[] sigData, signatureSize); signature = Signature.Restore(new ArraySegment <byte>(sigData)); }
public static (Hash, Signature) GetHashAndSignature(this Unpacker unpacker, int dataOffset, int dataSize) { var signatureKeyType = (KeyTypes)unpacker.UnpackByte(); unpacker.Position--; var signatureSize = Signature.GetSignatureBytes(signatureKeyType); unpacker.Unpack(out byte[] signatureData, signatureSize); var position = unpacker.Position; var signature = Signature.Restore(new ArraySegment <byte>(signatureData)); var partialStream = new PartialStream(unpacker.Stream, dataOffset, dataSize); var signatureHash = Hash.Generate(signature.DataHashType, partialStream); unpacker.Position = position; return(signatureHash, signature); }