Esempio n. 1
0
        public byte[] createSharedSecret(KeyAgreement keyAgreement)
        {
            string aG_x = BitConverter.ToString(keyAgreement.X).Replace("-", string.Empty);
            string aG_y = BitConverter.ToString(keyAgreement.Y).Replace("-", string.Empty);

            var bG_x            = new StringBuilder(256);
            var bG_y            = new StringBuilder(256);
            var strSharedSecret = new StringBuilder(256);

            int st = ECDH.CreateSharedSecret(aG_x, aG_y, bG_x, bG_y, strSharedSecret);

            // byte配列(32)にする
            var sharedSecret = Common.HexStringToBytes(strSharedSecret.ToString());

            My_KeyAgreement = new KeyAgreement(2, -7, 1, bG_x.ToString(), bG_y.ToString());

            return(sharedSecret);
        }
Esempio n. 2
0
        public async Task <CTAPResponse> GetKeyAgreement(DevParam devParam)
        {
            var cbor = CBORObject.NewMap();

            // 0x01:pinProtocol = 1固定
            cbor.Add(0x01, 1);

            // 0x02:subCommand = 0x02:getKeyAgreement
            cbor.Add(0x02, 0x02);

            var resi = await sendCommandandResponse(devParam, 0x06, cbor);

            var response = new CTAPResponse(resi);

            if (resi.ResponseDataCbor != null)
            {
                Authenticator_KeyAgreement = new KeyAgreement(resi.ResponseDataCbor);
            }

            return(response);
        }