Пример #1
0
 public static extern int libssh2_userauth_publickey(
     SshSessionHandle session,
     [MarshalAs(UnmanagedType.LPStr)] string username,
     [MarshalAs(UnmanagedType.LPArray)] byte[] publicKey,
     IntPtr pemPublicKeyLength,
     SignCallback callback,
     IntPtr context);
Пример #2
0
        /// <summary>
        /// Creates a new instance of <see cref="AuthenticodeKeyVaultSigner" />.
        /// </summary>
        /// <param name="signingAlgorithm">
        /// An instance of an asymmetric algorithm that will be used to sign. It must support signing with
        /// a private key.
        /// </param>
        /// <param name="signingCertificate">The X509 public certificate for the <paramref name="signingAlgorithm"/>.</param>
        /// <param name="fileDigestAlgorithm">The digest algorithm to sign the file.</param>
        /// <param name="timeStampConfiguration">The timestamp configuration for timestamping the file. To omit timestamping,
        /// use <see cref="TimeStampConfiguration.None"/>.</param>
        /// <param name="additionalCertificates">Any additional certificates to assist in building a certificate chain.</param>
        public AuthenticodeKeyVaultSigner(AsymmetricAlgorithm signingAlgorithm, X509Certificate2 signingCertificate,
                                          HashAlgorithmName fileDigestAlgorithm, TimeStampConfiguration timeStampConfiguration,
                                          X509Certificate2Collection additionalCertificates = null)
        {
            _fileDigestAlgorithm    = fileDigestAlgorithm;
            _signingCertificate     = signingCertificate ?? throw new ArgumentNullException(nameof(signingCertificate));
            _timeStampConfiguration = timeStampConfiguration ?? throw new ArgumentNullException(nameof(timeStampConfiguration));
            _signingAlgorithm       = signingAlgorithm ?? throw new ArgumentNullException(nameof(signingAlgorithm));
            _certificateStore       = MemoryCertificateStore.Create();
            _chain = new X509Chain();
            if (additionalCertificates != null)
            {
                _chain.ChainPolicy.ExtraStore.AddRange(additionalCertificates);
            }
            //We don't care about the trustworthiness of the cert. We just want a chain to sign with.
            _chain.ChainPolicy.VerificationFlags = X509VerificationFlags.AllFlags;


            if (!_chain.Build(signingCertificate))
            {
                throw new InvalidOperationException("Failed to build chain for certificate.");
            }
            for (var i = 0; i < _chain.ChainElements.Count; i++)
            {
                _certificateStore.Add(_chain.ChainElements[i].Certificate);
            }
            _signCallback = SignCallback;
        }
Пример #3
0
        /// <summary>
        /// Creates a new instance of <see cref="AuthenticodeKeyVaultSigner" />.
        /// </summary>
        /// <param name="signingAlgorithm">
        /// An instance of an asymmetric algorithm that will be used to sign. It must support signing with
        /// a private key.
        /// </param>
        /// <param name="signingCertificate">The X509 public certificate for the <paramref name="signingAlgorithm"/>.</param>
        /// <param name="timeStampConfiguration">The timestamp configuration for timestamping the file. To omit timestamping,
        /// use <see cref="TimeStampConfiguration.None"/>.</param>
        /// <param name="additionalCertificates">Any additional certificates to assist in building a certificate chain.</param>
        public AuthenticodeKeyVaultSigner(KeyManagementServiceClient client, CryptoKeyVersionName ckvn,
                                          TimeStampConfiguration timeStampConfiguration,
                                          X509Certificate2Collection additionalCertificates = null)
        {
            _client                 = client;
            _ckvn                   = ckvn;
            _signingCertificate     = additionalCertificates[0];
            _timeStampConfiguration = timeStampConfiguration ?? throw new ArgumentNullException(nameof(timeStampConfiguration));
            _signingAlgorithm       = _signingCertificate.SignatureAlgorithm.FriendlyName.Substring(0, 6).ToUpper();
            _certificateStore       = MemoryCertificateStore.Create();
            _chain                  = new X509Chain();
            if (additionalCertificates != null)
            {
                _chain.ChainPolicy.ExtraStore.AddRange(additionalCertificates);
            }
            //We don't care about the trustworthiness of the cert. We just want a chain to sign with.
            _chain.ChainPolicy.VerificationFlags = X509VerificationFlags.AllFlags;


            if (!_chain.Build(_signingCertificate))
            {
                throw new InvalidOperationException("Failed to build chain for certificate.");
            }
            for (var i = 0; i < _chain.ChainElements.Count; i++)
            {
                if (!_chain.ChainElements[i].Certificate.SubjectName.Equals(_chain.ChainElements[i].Certificate.IssuerName))
                {
                    _certificateStore.Add(_chain.ChainElements[i].Certificate);
                }
            }
            _signCallback = SignCallback;
        }
Пример #4
0
 public void Init(string day, string count, bool isSigned, SignCallback callback)
 {
     dayText.GetComponent <Text> ().text   = day;
     countText.GetComponent <Text> ().text = count;
     if (isSigned)
     {
         content.GetComponent <Image> ().color = Color.green;
     }
     signCallback = callback;
 }