Dim privateKeyStream AsStream= New FileStream("D:docusign.pem", FileMode.Open)
'Dim privateKeyStream AsStream= New MemoryStream(Encoding.UTF8.GetBytes(PK))Using SR = New StreamReader(privateKeyStream)IfNot SR Is Nothing And SR.Peek()>0ThenDim privateKeyBytes()As Byte = ReadAsBytes(privateKeyStream)
'Dim privateKeyBytes()As Byte = StreamToByteArray(privateKeyStream)
'Dim privateKeyBytes()As Byte = Convert.FromBase64String(PrivateKey)
'Dim privateKeyBytes()As Byte = Encoding.UTF8.GetBytes(PrivateKey)Dim privateKeyS AsString= Encoding.UTF8.GetString(privateKeyBytes)DimhandlerAs JwtSecurityTokenHandler = New JwtSecurityTokenHandler()handler.SetDefaultTimesOnTokenCreation = False
Dim descriptor As SecurityTokenDescriptor = New SecurityTokenDescriptor()
descriptor.Expires = DateTime.UtcNow.AddHours(1)
descriptor.IssuedAt = DateTime.UtcNow
Dim scopes As List(OfString)= New List(OfString)
scopes.Add(OAuth.Scope_SIGNATURE)
descriptor.Subject = New ClaimsIdentity()
descriptor.Subject.AddClaim(New Claim("scope",String.Join(" ", scopes)))
descriptor.Subject.AddClaim(New Claim("aud","account-d.docusign.com"))
descriptor.Subject.AddClaim(New Claim("iss","INTEGRATION_ID"))
descriptor.Subject.AddClaim(New Claim("sub","ACCOUNT_ID"))Dim RSA = CreateRSAKeyFromPem(privateKeyS)Dim rsaKey As RsaSecurityKey = New RsaSecurityKey(RSA)
descriptor.SigningCredentials = New SigningCredentials(rsaKey, SecurityAlgorithms.RsaSha256Signature)Dim Token =handler.CreateToken(descriptor)Dim jwtToken AsString=handler.WriteToken(Token)Dim baseUri AsString=String.Format("https://{0}/", basePath)Dim RestClient As RestClient = New RestClient(baseUri)
RestClient.Timeout=10000Dim contentType AsString="application/x-www-form-urlencoded"Dim formParams As New Dictionary(OfString,String)
formParams.Add("grant_type", OAuth.Grant_Type_JWT)
formParams.Add("assertion", jwtToken)Dim queryParams As New Dictionary(OfString,String)Dim headerParams As New Dictionary(OfString,String)
headerParams.Add("Content-Type","application/x-www-form-urlencoded")
headerParams.Add("Cache-Control","no-store")
headerParams.Add("Pragma","no-cache")Dim fileParams As New Dictionary(OfString, FileParameter)Dim pathParams As New Dictionary(OfString,String)Dim postBody As Object = Nothing
Dim request As RestRequest = PrepareRequest(basePath, Method.POST, queryParams, postBody, headerParams, formParams, fileParams, pathParams, contentType)Dim response As IRestResponse = RestClient.Execute(request)If(response.StatusCode >= HttpStatusCode.OK And response.StatusCode < HttpStatusCode.BadRequest)ThenDim tokenInfo As OAuth.OAuthToken = JsonConvert.DeserializeObject(Of OAuth.OAuthToken)(response.Content)Return tokenInfo.access_token
Else
Throw New ApiException(response.StatusCode,"Error while requesting server, received a non successful HTTP code "& response.ResponseStatus &" with response Body: "+ response.Content, response.Content)EndIfElse
Throw New ApiException(400,"Private key stream not supplied or is invalid!")EndIfEndUsing
Dim ac As ApiClient = New ApiClient()Dim privateKeyStream()As Byte = Convert.FromBase64String(PrivateKey)Dim tokenInfo As OAuth.OAuthToken = ac.RequestJWTUserToken("INTEGRATION_ID","ACCOUNT_ID","https://account-d.docusign.com/oauth/token", privateKeyStream,1)
Dim privateKeyStream AsStream= New FileStream("D:docusign.pem", FileMode.Open)
'Dim privateKeyStream AsStream= New MemoryStream(Encoding.UTF8.GetBytes(PK))Using SR = New StreamReader(privateKeyStream)IfNot SR Is Nothing And SR.Peek()>0ThenDim privateKeyBytes()As Byte = ReadAsBytes(privateKeyStream)
'Dim privateKeyBytes()As Byte = StreamToByteArray(privateKeyStream)
'Dim privateKeyBytes()As Byte = Convert.FromBase64String(PrivateKey)
'Dim privateKeyBytes()As Byte = Encoding.UTF8.GetBytes(PrivateKey)Dim privateKeyS AsString= Encoding.UTF8.GetString(privateKeyBytes)DimhandlerAs JwtSecurityTokenHandler = New JwtSecurityTokenHandler()handler.SetDefaultTimesOnTokenCreation = False
Dim descriptor As SecurityTokenDescriptor = New SecurityTokenDescriptor()
descriptor.Expires = DateTime.UtcNow.AddHours(1)
descriptor.IssuedAt = DateTime.UtcNow
Dim scopes As List(OfString)= New List(OfString)
scopes.Add(OAuth.Scope_SIGNATURE)
descriptor.Subject = New ClaimsIdentity()
descriptor.Subject.AddClaim(New Claim("scope",String.Join(" ", scopes)))
descriptor.Subject.AddClaim(New Claim("aud","account-d.docusign.com"))
descriptor.Subject.AddClaim(New Claim("iss","INTEGRATION_ID"))
descriptor.Subject.AddClaim(New Claim("sub","ACCOUNT_ID"))Dim RSA = CreateRSAKeyFromPem(privateKeyS)Dim rsaKey As RsaSecurityKey = New RsaSecurityKey(RSA)
descriptor.SigningCredentials = New SigningCredentials(rsaKey, SecurityAlgorithms.RsaSha256Signature)Dim Token =handler.CreateToken(descriptor)Dim jwtToken AsString=handler.WriteToken(Token)Dim baseUri AsString=String.Format("https://{0}/", basePath)Dim RestClient As RestClient = New RestClient(baseUri)
RestClient.Timeout=10000Dim contentType AsString="application/x-www-form-urlencoded"Dim formParams As New Dictionary(OfString,String)
formParams.Add("grant_type", OAuth.Grant_Type_JWT)
formParams.Add("assertion", jwtToken)Dim queryParams As New Dictionary(OfString,String)Dim headerParams As New Dictionary(OfString,String)
headerParams.Add("Content-Type","application/x-www-form-urlencoded")
headerParams.Add("Cache-Control","no-store")
headerParams.Add("Pragma","no-cache")Dim fileParams As New Dictionary(OfString, FileParameter)Dim pathParams As New Dictionary(OfString,String)Dim postBody As Object = Nothing
Dim request As RestRequest = PrepareRequest(basePath, Method.POST, queryParams, postBody, headerParams, formParams, fileParams, pathParams, contentType)Dim response As IRestResponse = RestClient.Execute(request)If(response.StatusCode >= HttpStatusCode.OK And response.StatusCode < HttpStatusCode.BadRequest)ThenDim tokenInfo As OAuth.OAuthToken = JsonConvert.DeserializeObject(Of OAuth.OAuthToken)(response.Content)Return tokenInfo.access_token
Else
Throw New ApiException(response.StatusCode,"Error while requesting server, received a non successful HTTP code "& response.ResponseStatus &" with response Body: "+ response.Content, response.Content)EndIfElse
Throw New ApiException(400,"Private key stream not supplied or is invalid!")EndIfEndUsing
Dim ac As ApiClient = New ApiClient()Dim privateKeyStream()As Byte = Convert.FromBase64String(PrivateKey)Dim tokenInfo As OAuth.OAuthToken = ac.RequestJWTUserToken("INTEGRATION_ID","ACCOUNT_ID","https://account-d.docusign.com/oauth/token", privateKeyStream,1)