예제 #1
0
        internal ScannableFingerprint(byte[] localFingerprintData, byte[] remoteFingerprintData)
        {
            FingerprintProtos.LogicalFingerprint localFingerprint = FingerprintProtos.LogicalFingerprint.CreateBuilder()
                                                                    .SetContent(ByteString.CopyFrom(ByteUtil.Trim(localFingerprintData, 32)))
                                                                    .Build();

            FingerprintProtos.LogicalFingerprint remoteFingerprint = FingerprintProtos.LogicalFingerprint.CreateBuilder()
                                                                     .SetContent(ByteString.CopyFrom(ByteUtil.Trim(remoteFingerprintData, 32)))
                                                                     .Build();

            _fingerprints = FingerprintProtos.CombinedFingerprints.CreateBuilder()
                            .SetVersion((uint)Version)
                            .SetLocalFingerprint(localFingerprint)
                            .SetRemoteFingerprint(remoteFingerprint)
                            .Build();
        }
예제 #2
0
        /**
         * Compare a scanned QR code with what we expect.
         *
         * @param scannedFingerprintData The scanned data
         * @return True if matching, otehrwise false.
         * @throws FingerprintVersionMismatchException if the scanned fingerprint is the wrong version.
         * @throws FingerprintIdentifierMismatchException if the scanned fingerprint is for the wrong stable identifier.
         */
        public bool CompareTo(byte[] scannedFingerprintData)

        /* throws FingerprintVersionMismatchException,
         *     FingerprintIdentifierMismatchException,
         *     FingerprintParsingException */
        {
            try
            {
                FingerprintProtos.CombinedFingerprints scanned = FingerprintProtos.CombinedFingerprints.ParseFrom(scannedFingerprintData);

                if (!scanned.HasRemoteFingerprint || !scanned.HasLocalFingerprint ||
                    !scanned.HasVersion || scanned.Version != _fingerprints.Version)
                {
                    throw new FingerprintVersionMismatchException((int)scanned.Version, Version);
                }

                return(ByteUtil.IsEqual(_fingerprints.LocalFingerprint.Content.ToByteArray(), scanned.RemoteFingerprint.Content.ToByteArray()) &&
                       ByteUtil.IsEqual(_fingerprints.RemoteFingerprint.Content.ToByteArray(), scanned.LocalFingerprint.Content.ToByteArray()));
            }
            catch (InvalidProtocolBufferException e)
            {
                throw new FingerprintParsingException(e);
            }
        }