{"id":28577463,"url":"https://github.com/mastercard/oauth1-signer-go","last_synced_at":"2025-06-11T00:38:47.785Z","repository":{"id":43294318,"uuid":"211021600","full_name":"Mastercard/oauth1-signer-go","owner":"Mastercard","description":"Library for generating a Mastercard API compliant OAuth signature.","archived":false,"fork":false,"pushed_at":"2024-12-17T11:24:09.000Z","size":60,"stargazers_count":21,"open_issues_count":0,"forks_count":12,"subscribers_count":17,"default_branch":"main","last_synced_at":"2025-01-20T09:40:28.113Z","etag":null,"topics":["go","golang","mastercard","oauth1","oauth1a","openapi"],"latest_commit_sha":null,"homepage":"https://developer.mastercard.com/platform/documentation/security-and-authentication/using-oauth-1a-to-access-mastercard-apis/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Mastercard.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-09-26T06:58:30.000Z","updated_at":"2024-12-31T11:27:31.000Z","dependencies_parsed_at":"2024-01-19T13:26:55.972Z","dependency_job_id":"6ece5e2b-971d-4925-99bb-43f063d235ac","html_url":"https://github.com/Mastercard/oauth1-signer-go","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mastercard%2Foauth1-signer-go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mastercard%2Foauth1-signer-go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mastercard%2Foauth1-signer-go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mastercard%2Foauth1-signer-go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mastercard","download_url":"https://codeload.github.com/Mastercard/oauth1-signer-go/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mastercard%2Foauth1-signer-go/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259177332,"owners_count":22817349,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["go","golang","mastercard","oauth1","oauth1a","openapi"],"created_at":"2025-06-11T00:37:50.926Z","updated_at":"2025-06-11T00:38:47.776Z","avatar_url":"https://github.com/Mastercard.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# oauth1-signer-go\n[![](https://developer.mastercard.com/_/_/src/global/assets/svg/mcdev-logo-dark.svg)](https://developer.mastercard.com/)\n\n[![](https://github.com/Mastercard/oauth1-signer-go/workflows/Build%20\u0026%20Test/badge.svg)](https://github.com/Mastercard/oauth1-signer-go/actions?query=workflow%3A%22Build+%26+Test%22)\n[![](https://goreportcard.com/badge/github.com/Mastercard/oauth1-signer-go)](https://goreportcard.com/report/github.com/Mastercard/oauth1-signer-go)\n[![](https://sonarcloud.io/api/project_badges/measure?project=Mastercard_oauth1-signer-go\u0026metric=alert_status)](https://sonarcloud.io/dashboard?id=Mastercard_oauth1-signer-go)\n[![](https://github.com/Mastercard/oauth1-signer-go/workflows/broken%20links%3F/badge.svg)](https://github.com/Mastercard/oauth1-signer-go/actions?query=workflow%3A%22broken+links%3F%22)\n[![](https://img.shields.io/badge/godoc-reference-5272B4.svg)](https://godoc.org/github.com/Mastercard/oauth1-signer-go)\n[![](https://img.shields.io/badge/license-MIT-yellow.svg)](https://github.com/Mastercard/oauth1-signer-go/blob/master/LICENSE)\n\n## Table of Contents\n- [Overview](#overview)\n  * [Compatibility](#compatibility)\n  * [References](#references)\n  * [Versioning and Deprecation Policy](#versioning)\n- [Usage](#usage)\n  * [Prerequisites](#prerequisites)\n  * [Installation](#installation)\n  * [Loading the Signing Key](#loading-the-signing-key) \n  * [Creating the OAuth Authorization Header](#creating-the-oauth-authorization-header)\n  * [Signing HTTP Request](#signing-http-request)\n  * [Integrating with OpenAPI Generator API Client Libraries](#integrating-with-openapi-generator-api-client-libraries)\n\n## Overview \u003ca name=\"overview\"\u003e\u003c/a\u003e\nLibrary for Generating a Mastercard API compliant OAuth signature.\n\n### Compatibility \u003ca name=\"compatibility\"\u003e\u003c/a\u003e\n* Go 1.20+\n\n### References \u003ca name=\"references\"\u003e\u003c/a\u003e\n* [OAuth 1.0a specification](https://tools.ietf.org/html/rfc5849)\n* [Body hash extension for non application/x-www-form-urlencoded payloads](https://tools.ietf.org/id/draft-eaton-oauth-bodyhash-00.html)\n\n### Versioning and Deprecation Policy \u003ca name=\"versioning\"\u003e\u003c/a\u003e\n* [Mastercard Versioning and Deprecation Policy](https://github.com/Mastercard/.github/blob/main/CLIENT_LIBRARY_DEPRECATION_POLICY.md)\n\n## Usage \u003ca name=\"usage\"\u003e\u003c/a\u003e\n### Prerequisites \u003ca name=\"prerequisites\"\u003e\u003c/a\u003e\nBefore using this library, you will need to set up a project in the [Mastercard Developers Portal](https://developer.mastercard.com). \n\nAs part of this set up, you'll receive credentials for your app:\n* A consumer key (displayed on the Mastercard Developer Portal)\n* A private request signing key (matching the public certificate displayed on the Mastercard Developer Portal)\n\n### Installation \u003ca name=\"installation\"\u003e\u003c/a\u003e\n\n####\n```go\nimport github.com/mastercard/oauth1-signer-go\n```\n\n### Loading the Signing Key \u003ca name=\"loading-the-signing-key\"\u003e\u003c/a\u003e\n\nA `signingKey` can be created by calling the `utils.LoadSigningKey` function:\n```go\nimport \"github.com/mastercard/oauth1-signer-go/utils\"\n\n//…\nsigningKey, err := utils.LoadSigningKey(\n                                    \"\u003cinsert PKCS#12 key file path\u003e\", \n                                    \"\u003cinsert key password\u003e\")\n//…\n```\n\n### Creating the OAuth Authorization Header \u003ca name=\"creating-the-oauth-authorization-header\"\u003e\u003c/a\u003e\nThe function that does all the heavy lifting is `OAuth.GetAuthorizationHeader`. You can call into it directly and as long as you provide the correct parameters, it will return a string that you can add into your request's `Authorization` header.\n\n```go\nimport \"github.com/mastercard/oauth1-signer-go\"\n\n//…\nconsumerKey := \"\u003cinsert consumer key\u003e\"\nurl, _ := url.Parse(\"https://sandbox.api.mastercard.com/service\")\nmethod := \"POST\"\npayload := \"\u003cinsert payload\u003e\"\nauthHeader, err := oauth.GetAuthorizationHeader(url, method, payload, consumerKey, signingKey)\n//…\n```\n\n### Signing HTTP Request \u003ca name=\"signing-http-request\"\u003e\u003c/a\u003e\n\nAlternatively, you can use helper function for http request.\n\nUsage briefly described below, but you can also refer to the test package for examples. \n\n```go\nimport (\n  \"strings\"\n  \"github.com/mastercard/oauth1-signer-go\"\n  )\n\n//…\npayload := strings.NewReader(\"\u003cinsert payload\u003e\")\nrequest, _ := http.NewRequest(\"POST\", \"https://sandbox.api.mastercard.com/service\", payload)\nsigner := \u0026oauth.Signer{\n    ConsumerKey: consumerKey,\n    SigningKey:  signingKey,\n}\nerr = signer.Sign(request)\n//…\n```\n\n### Integrating with OpenAPI Generator API Client Libraries \u003ca name=\"integrating-with-openapi-generator-api-client-libraries\"\u003e\u003c/a\u003e\n\n[OpenAPI Generator](https://github.com/OpenAPITools/openapi-generator) generates API client libraries from [OpenAPI Specs](https://github.com/OAI/OpenAPI-Specification). \nIt provides generators and library templates for supporting multiple languages and frameworks.\n\nThe `github.com/mastercard/oauth1-signer-go/interceptor` package provides you function for http request interception you can use when configuring your API client. This function takes care of adding the correct `Authorization` header before sending the request.\n\nGenerators currently supported:\n+ [Go](#go)\n\n#### Go \u003ca name=\"go\"\u003e\u003c/a\u003e\n##### OpenAPI Generator\n\nClient libraries can be generated using the following command:\n\n```shell\nopenapi-generator-cli generate -i openapi-spec.yaml -g go -o out\n```\n\nSee also:\n* [OpenAPI Generator CLI Installation](https://openapi-generator.tech/docs/installation/)\n* [CONFIG OPTIONS for Go](https://github.com/OpenAPITools/openapi-generator/blob/master/docs/generators/go.md)\n\n##### Usage of the github.com/mastercard/oauth1-signer-go/interceptor\n\n```go\nimport \"github.com/mastercard/oauth1-signer-go/interceptor\"\n\n//…\nconfiguration := openapi.NewConfiguration()\nconfiguration.BasePath = \"https://sandbox.api.mastercard.com\"\nhttpClient, _ := interceptor.GetHttpClient(\"\u003cinsert consumer key\u003e\", \"\u003cinsert PKCS#12 key file path\u003e\", \"\u003cinsert key password\u003e\")\nconfiguration.HTTPClient = httpClient\napiClient := openapi.NewAPIClient(configuration)\n\nresponse, err = apiClient.SomeApi.doSomething()\n//…\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmastercard%2Foauth1-signer-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmastercard%2Foauth1-signer-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmastercard%2Foauth1-signer-go/lists"}