ValueTask <ISender> ILocalParty.CreateSenderAsync(IActivityMonitor monitor, ITrustedParty audience, TimeSpan validity, bool encrypt) { TrustedParty?p; Throw.CheckArgument((p = audience as TrustedParty) != null); return(CreateSenderAsync(monitor, p, validity, encrypt)); }
public KeyExchangeFailedEventArgs(IActivityMonitor monitor, ITrustedParty targetParty, KeyExchangeResultCode resultCode) : base(monitor) { Throw.CheckNotNullArgument(targetParty); Throw.CheckArgument(resultCode != KeyExchangeResultCode.Success); TargetParty = targetParty; ResultCode = resultCode; }
public KeyExchangeRequiredEventArgs(IActivityMonitor monitor, ITrustedParty targetParty, ReadOnlyMemory <byte> exchangeData, OneTimePassword?oneTimePassword) : base(monitor) { Throw.CheckNotNullArgument(targetParty); TargetParty = targetParty; ExchangeRequestData = exchangeData; OneTimePassword = oneTimePassword; }
/// <summary> /// Creates a key based on the configuration and the provided properties. /// </summary> /// <param name="monitor">The monitor to use.</param> /// <param name="kid">The <see cref="KeyBase.Kid"/>.</param> /// <param name="party">The target audience. Creation behavior may differ per party or it's key realm.</param> /// <param name="keyRequirement">The key requirement.</param> /// <param name="bestBefore">The <see cref="KeyBase.BestBefore"/>.</param> /// <param name="maxUseCount">The <see cref="KeyBase.MaxUseCount"/>. When 0, <see cref="KeyConfiguration.DefaultUseCount"/> is used.</param> /// <returns>The new key.</returns> public KeyBase CreateKey(IActivityMonitor monitor, string kid, ITrustedParty party, KeyRequirement keyRequirement, DateTime bestBefore, uint maxUseCount) { KeyBase?result = TryCreateKey(monitor, kid, party, keyRequirement, bestBefore, maxUseCount); if (result == null) { throw new CKException($"Unable to create key for '{keyRequirement}'."); } monitor.Info($"Key created: {result.GetType().Name} '{result.Kid}', best before '{result.BestBefore:O}'."); return(result); }
KeyBase?TryCreateKey(IActivityMonitor monitor, string kid, ITrustedParty party, KeyRequirement keyRequirement, DateTime bestBefore, uint maxUseCount) { if (bestBefore.Kind != DateTimeKind.Utc) { throw new ArgumentException("Must be UTC kind.", nameof(bestBefore)); } var now = Clock.UtcNow; var delta = bestBefore - now; if (delta <= TimeSpan.Zero) { throw new ArgumentOutOfRangeException($"Best before is {bestBefore:O} in the past (now is {now:O}).", nameof(bestBefore)); } KeyBase?result; if (keyRequirement.KeyType == KeyType.Ec) { KeyConfig.ECKeys.Apply(now, delta, ref bestBefore, ref maxUseCount); result = ECKey.Create(monitor, Clock, kid, keyRequirement, bestBefore, maxUseCount); } else if (keyRequirement.KeyType == KeyType.Rsa) { Debug.Assert(keyRequirement.KeySizeInBits != null); KeyConfig.RSAKeys.Apply(now, delta, ref bestBefore, ref maxUseCount); result = RSAKey.Create(monitor, Clock, kid, keyRequirement.Operations, keyRequirement.KeySizeInBits.Value, bestBefore, maxUseCount); } else { Debug.Assert(keyRequirement.KeySizeInBits != null); KeyConfig.SecretKeys.Apply(now, delta, ref bestBefore, ref maxUseCount); result = new SymmetricKey(Clock, kid, keyRequirement.Operations, keyRequirement.KeySizeInBits.Value, bestBefore, maxUseCount); } return(result); }
internal VerifyResult(ITrustedParty issuer, ReadOnlyMemory <byte> payload, in KeyUsageInfo keyUsage, bool enc)