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);
/// <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; }
/// <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; }
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; }